Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

SSL java_enc.go   Sprache: unbekannt

 
Spracherkennung für: .go vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

// Code generated by go run gob_gen.go; DO NOT EDIT.

package java

import (
 "android/soong/android"
 "android/soong/dexpreopt"
 "bytes"
 "fmt"
 "github.com/google/blueprint/gobtools"
 "github.com/google/blueprint/proptools"
 "github.com/google/blueprint/uniquelist"
 "reflect"
 "unsafe"
)

// begin of aar.go
func init() {
 resourcesNodeGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(resourcesNode) })
 AndroidLibraryInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AndroidLibraryInfo) })
 AARImportInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AARImportInfo) })
 JniPackageInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JniPackageInfo) })
 AARImportDepInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AARImportDepInSameApexChecker) })
 AARInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AARInfo) })
}

func (r resourcesNode) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.resPackage); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.manifest); err != nil {
  return err
 }

 val1 := r.additionalManifests.Len() == 0
 if err = gobtools.EncodeBool(buf, val1); err != nil {
  return err
 }
 if !val1 {
  if err = gobtools.EncodeReference(ctx, r.additionalManifests, buf, func(v uniquelist.UniqueList[android.Path], buf *bytes.Buffer) error {
   val2 := v.ToSlice()
   if val2 == nil {
    if err = gobtools.EncodeInt(buf, -1); err != nil {
     return err
    }
   } else {
    if err = gobtools.EncodeInt(buf, len(val2)); err != nil {
     return err
    }
    for val3 := 0; val3 < len(val2); val3++ {
     if err = gobtools.EncodeInterface(ctx, buf, val2[val3]); err != nil {
      return err
     }
    }
   }
   return nil
  }); err != nil {
   return err
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.rTxt); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.rJar); err != nil {
  return err
 }

 if err = r.assets.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.usedResourceProcessor); err != nil {
  return err
 }
 return err
}

func (r resourcesNode) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.resourcesNode")
 hasher.WriteInt(7)
 hasher.WriteString(":java.android.Path")
 val1 := r.resPackage == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.resPackage); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.resPackage == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.resPackage.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.resPackage.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.manifest == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.manifest); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.manifest == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error { return r.manifest.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.manifest.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.uniquelist.UniqueList[android.Path]")
 val11 := func(hasher *proptools.Hasher, val7 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val8 := val7 == nil
  if val8 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val7); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val9 := val7 == nil
     if val9 {
      hasher.WriteByte(0)
     } else {
      val10 := func(hasher *proptools.Hasher) error { return val7.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val10); err != nil {
       return err
      }
     }
    }
   } else {
    val7.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.additionalManifests.Hash(hasher, "android.Path", val11); err != nil {
  return err
 }
 hasher.WriteString(":java.android.Path")
 val12 := r.rTxt == nil
 if val12 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.rTxt); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val13 := r.rTxt == nil
    if val13 {
     hasher.WriteByte(0)
    } else {
     val14 := func(hasher *proptools.Hasher) error { return r.rTxt.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val14); err != nil {
      return err
     }
    }
   }
  } else {
   r.rTxt.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val15 := r.rJar == nil
 if val15 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.rJar); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val16 := r.rJar == nil
    if val16 {
     hasher.WriteByte(0)
    } else {
     val17 := func(hasher *proptools.Hasher) error { return r.rJar.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val17); err != nil {
      return err
     }
    }
   }
  } else {
   r.rJar.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.assets.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.bool")
 if r.usedResourceProcessor {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *resourcesNode) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.resPackage = nil
 } else {
  r.resPackage = val2.(android.Path)
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.manifest = nil
 } else {
  r.manifest = val4.(android.Path)
 }

 var val6 bool
 if err = gobtools.DecodeBool(buf, &val6); err != nil {
  return err
 }
 if !val6 {
  tmp, err := gobtools.DecodeReference(ctx, &r.additionalManifests, buf, func(value *uniquelist.UniqueList[android.Path], buf *bytes.Reader) error {
   var val7 []android.Path
   var val8 int
   err = gobtools.DecodeInt(buf, &val8)
   if err != nil {
    return err
   }
   if val8 != -1 {
    val7 = make([]android.Path, val8)
    for val9 := 0; val9 < int(val8); val9++ {
     if val11, err := gobtools.DecodeInterface(ctx, buf); err != nil {
      return err
     } else if val11 == nil {
      val7[val9] = nil
     } else {
      val7[val9] = val11.(android.Path)
     }
    }
   }
   *value = uniquelist.Make(val7)
   return nil
  })
  if err != nil {
   return err
  }
  r.additionalManifests = *tmp
 }

 if val13, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val13 == nil {
  r.rTxt = nil
 } else {
  r.rTxt = val13.(android.Path)
 }

 if val15, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val15 == nil {
  r.rJar = nil
 } else {
  r.rJar = val15.(android.Path)
 }

 if err = r.assets.Decode(ctx, buf); err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.usedResourceProcessor)
 if err != nil {
  return err
 }

 return err
}

var resourcesNodeGobRegId int16

func (r resourcesNode) GetTypeId() int16 {
 return resourcesNodeGobRegId
}

func (r AndroidLibraryInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error
 return err
}

func (r AndroidLibraryInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AndroidLibraryInfo")
 hasher.WriteInt(0)
 return nil
}

func (r *AndroidLibraryInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 return err
}

var AndroidLibraryInfoGobRegId int16

func (r AndroidLibraryInfo) GetTypeId() int16 {
 return AndroidLibraryInfoGobRegId
}

func (r AARImportInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error
 return err
}

func (r AARImportInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AARImportInfo")
 hasher.WriteInt(0)
 return nil
}

func (r *AARImportInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 return err
}

var AARImportInfoGobRegId int16

func (r AARImportInfo) GetTypeId() int16 {
 return AARImportInfoGobRegId
}

func (r JniPackageInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.JniPackages == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.JniPackages)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.JniPackages); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.JniPackages[val1]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r JniPackageInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JniPackageInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.JniPackages))
 for val1 := 0; val1 < len(r.JniPackages); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.JniPackages[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.JniPackages[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.JniPackages[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.JniPackages[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.JniPackages[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 return nil
}

func (r *JniPackageInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.JniPackages = make([]android.Path, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val6 == nil {
    r.JniPackages[val4] = nil
   } else {
    r.JniPackages[val4] = val6.(android.Path)
   }
  }
 }

 return err
}

var JniPackageInfoGobRegId int16

func (r JniPackageInfo) GetTypeId() int16 {
 return JniPackageInfoGobRegId
}

func (r AARImportDepInSameApexChecker) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r AARImportDepInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AARImportDepInSameApexChecker")
 hasher.WriteInt(1)
 if err := r.BaseDepInSameApexChecker.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *AARImportDepInSameApexChecker) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var AARImportDepInSameApexCheckerGobRegId int16

func (r AARImportDepInSameApexChecker) GetTypeId() int16 {
 return AARImportDepInSameApexCheckerGobRegId
}

func (r AARInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.Aar); err != nil {
  return err
 }
 return err
}

func (r AARInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AARInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":java.android.Path")
 val1 := r.Aar == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.Aar); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.Aar == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.Aar.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.Aar.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *AARInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.Aar = nil
 } else {
  r.Aar = val2.(android.Path)
 }

 return err
}

var AARInfoGobRegId int16

func (r AARInfo) GetTypeId() int16 {
 return AARInfoGobRegId
}

// end of aar.go

// begin of android_resources.go
func init() {
 rroDirGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(rroDir) })
}

func (r rroDir) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.path); err != nil {
  return err
 }

 if err = gobtools.EncodeInt(buf, int(r.overlayType)); err != nil {
  return err
 }
 return err
}

func (r rroDir) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.rroDir")
 hasher.WriteInt(2)
 hasher.WriteString(":java.android.Path")
 val1 := r.path == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.path); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.path == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.path.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.path.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.overlayType")
 hasher.WriteString(":.int")
 hasher.WriteUint64(uint64(int(r.overlayType)))
 return nil
}

func (r *rroDir) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.path = nil
 } else {
  r.path = val2.(android.Path)
 }

 var val4 int
 err = gobtools.DecodeInt(buf, &val4)
 if err != nil {
  return err
 }
 r.overlayType = overlayType(val4)

 return err
}

var rroDirGobRegId int16

func (r rroDir) GetTypeId() int16 {
 return rroDirGobRegId
}

// end of android_resources.go

// begin of apkcerts.go
func init() {
 ApkCertInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ApkCertInfo) })
 ApkCertsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ApkCertsInfo) })
}

func (r ApkCertInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.ApkCertsFile); err != nil {
  return err
 }

 if err = r.Certificate.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.Name); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.Test); err != nil {
  return err
 }
 return err
}

func (r ApkCertInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ApkCertInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":java.android.Path")
 val1 := r.ApkCertsFile == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ApkCertsFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.ApkCertsFile == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.ApkCertsFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.ApkCertsFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.Certificate.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.Name)
 hasher.WriteString(":.bool")
 if r.Test {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *ApkCertInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.ApkCertsFile = nil
 } else {
  r.ApkCertsFile = val2.(android.Path)
 }

 if err = r.Certificate.Decode(ctx, buf); err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.Name)
 if err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.Test)
 if err != nil {
  return err
 }

 return err
}

var ApkCertInfoGobRegId int16

func (r ApkCertInfo) GetTypeId() int16 {
 return ApkCertInfoGobRegId
}

func (r ApkCertsInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r); val1++ {
   if err = r[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }
 return err
}

func (r ApkCertsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":.[]ApkCertInfo")
 hasher.WriteInt(len(r))
 for val1 := 0; val1 < len(r); val1++ {
  if err := r[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *ApkCertsInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  (*r) = make([]ApkCertInfo, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   if err = (*r)[val3].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 return err
}

var ApkCertsInfoGobRegId int16

func (r ApkCertsInfo) GetTypeId() int16 {
 return ApkCertsInfoGobRegId
}

// end of apkcerts.go

// begin of app.go
func init() {
 FlagsPackagesGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(FlagsPackages) })
 AppInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AppInfo) })
 CertificateGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(Certificate) })
 AppDepInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AppDepInSameApexChecker) })
 AndroidAppCertificateInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AndroidAppCertificateInfo) })
 BundleInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(BundleInfo) })
}

func (r FlagsPackages) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.AconfigTextFiles == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.AconfigTextFiles)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.AconfigTextFiles); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.AconfigTextFiles[val1]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r FlagsPackages) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.FlagsPackages")
 hasher.WriteInt(1)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.AconfigTextFiles))
 for val1 := 0; val1 < len(r.AconfigTextFiles); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.AconfigTextFiles[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.AconfigTextFiles[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.AconfigTextFiles[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.AconfigTextFiles[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.AconfigTextFiles[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 return nil
}

func (r *FlagsPackages) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.AconfigTextFiles = make([]android.Path, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val6 == nil {
    r.AconfigTextFiles[val4] = nil
   } else {
    r.AconfigTextFiles[val4] = val6.(android.Path)
   }
  }
 }

 return err
}

var FlagsPackagesGobRegId int16

func (r FlagsPackages) GetTypeId() int16 {
 return FlagsPackagesGobRegId
}

func (r AppInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeBool(buf, r.Updatable); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.TestHelperApp); err != nil {
  return err
 }

 if r.EmbeddedJNILibs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.EmbeddedJNILibs)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.EmbeddedJNILibs); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.EmbeddedJNILibs[val1]); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.MergedManifestFile); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.Prebuilt); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.AppSet); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.Privileged); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.OutputFile); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.InstallApkName); err != nil {
  return err
 }

 if err = r.JacocoInfo.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.Certificate.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.PrivAppAllowlist.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.PreinstallAllowlist.Encode(ctx, buf); err != nil {
  return err
 }

 val2 := r.OverriddenManifestPackageName == nil
 if err = gobtools.EncodeBool(buf, val2); err != nil {
  return err
 }
 if !val2 {
  if err = gobtools.EncodeString(buf, (*r.OverriddenManifestPackageName)); err != nil {
   return err
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ApkCertsFile); err != nil {
  return err
 }

 if r.JniLibs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.JniLibs)); err != nil {
   return err
  }
  for val3 := 0; val3 < len(r.JniLibs); val3++ {
   if err = r.JniLibs[val3].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if r.JniCoverageOutputs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.JniCoverageOutputs)); err != nil {
   return err
  }
  for val4 := 0; val4 < len(r.JniCoverageOutputs); val4++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.JniCoverageOutputs[val4]); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.PackedAdditionalOutputs); err != nil {
  return err
 }
 return err
}

func (r AppInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AppInfo")
 hasher.WriteInt(18)
 hasher.WriteString(":.bool")
 if r.Updatable {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.TestHelperApp {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.EmbeddedJNILibs))
 for val1 := 0; val1 < len(r.EmbeddedJNILibs); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.EmbeddedJNILibs[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.EmbeddedJNILibs[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.EmbeddedJNILibs[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.EmbeddedJNILibs[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.EmbeddedJNILibs[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Path")
 val5 := r.MergedManifestFile == nil
 if val5 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.MergedManifestFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val6 := r.MergedManifestFile == nil
    if val6 {
     hasher.WriteByte(0)
    } else {
     val7 := func(hasher *proptools.Hasher) error {
      return r.MergedManifestFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
      return err
     }
    }
   }
  } else {
   r.MergedManifestFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.bool")
 if r.Prebuilt {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.AppSet {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Privileged {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":java.android.Path")
 val8 := r.OutputFile == nil
 if val8 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.OutputFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val9 := r.OutputFile == nil
    if val9 {
     hasher.WriteByte(0)
    } else {
     val10 := func(hasher *proptools.Hasher) error { return r.OutputFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val10); err != nil {
      return err
     }
    }
   }
  } else {
   r.OutputFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.InstallApkName)
 if err := r.JacocoInfo.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.Certificate.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.PrivAppAllowlist.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.PreinstallAllowlist.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.*string")
 val11 := r.OverriddenManifestPackageName == nil
 if val11 {
  hasher.WriteByte(0)
 } else {
  val12 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.OverriddenManifestPackageName))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.OverriddenManifestPackageName)), val12); err != nil {
   return err
  }
 }
 hasher.WriteString(":java.android.Path")
 val13 := r.ApkCertsFile == nil
 if val13 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ApkCertsFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val14 := r.ApkCertsFile == nil
    if val14 {
     hasher.WriteByte(0)
    } else {
     val15 := func(hasher *proptools.Hasher) error { return r.ApkCertsFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val15); err != nil {
      return err
     }
    }
   }
  } else {
   r.ApkCertsFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.[]jniLib")
 hasher.WriteInt(len(r.JniLibs))
 for val16 := 0; val16 < len(r.JniLibs); val16++ {
  if err := r.JniLibs[val16].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.JniCoverageOutputs))
 for val17 := 0; val17 < len(r.JniCoverageOutputs); val17++ {
  hasher.WriteString("android/soong/android:android.Path")
  val18 := r.JniCoverageOutputs[val17] == nil
  if val18 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.JniCoverageOutputs[val17]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val19 := r.JniCoverageOutputs[val17] == nil
     if val19 {
      hasher.WriteByte(0)
     } else {
      val20 := func(hasher *proptools.Hasher) error {
       return r.JniCoverageOutputs[val17].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val20); err != nil {
       return err
      }
     }
    }
   } else {
    r.JniCoverageOutputs[val17].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Path")
 val21 := r.PackedAdditionalOutputs == nil
 if val21 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.PackedAdditionalOutputs); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val22 := r.PackedAdditionalOutputs == nil
    if val22 {
     hasher.WriteByte(0)
    } else {
     val23 := func(hasher *proptools.Hasher) error {
      return r.PackedAdditionalOutputs.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val23); err != nil {
      return err
     }
    }
   }
  } else {
   r.PackedAdditionalOutputs.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *AppInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeBool(buf, &r.Updatable)
 if err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.TestHelperApp)
 if err != nil {
  return err
 }

 var val5 int
 err = gobtools.DecodeInt(buf, &val5)
 if err != nil {
  return err
 }
 if val5 != -1 {
  r.EmbeddedJNILibs = make([]android.Path, val5)
  for val6 := 0; val6 < int(val5); val6++ {
   if val8, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val8 == nil {
    r.EmbeddedJNILibs[val6] = nil
   } else {
    r.EmbeddedJNILibs[val6] = val8.(android.Path)
   }
  }
 }

 if val10, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val10 == nil {
  r.MergedManifestFile = nil
 } else {
  r.MergedManifestFile = val10.(android.Path)
 }

 err = gobtools.DecodeBool(buf, &r.Prebuilt)
 if err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.AppSet)
 if err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.Privileged)
 if err != nil {
  return err
 }

 if val15, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val15 == nil {
  r.OutputFile = nil
 } else {
  r.OutputFile = val15.(android.Path)
 }

 err = gobtools.DecodeString(buf, &r.InstallApkName)
 if err != nil {
  return err
 }

 if err = r.JacocoInfo.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.Certificate.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.PrivAppAllowlist.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.PreinstallAllowlist.Decode(ctx, buf); err != nil {
  return err
 }

 var val22 bool
 if err = gobtools.DecodeBool(buf, &val22); err != nil {
  return err
 }
 if !val22 {
  var val21 string
  err = gobtools.DecodeString(buf, &val21)
  if err != nil {
   return err
  }
  r.OverriddenManifestPackageName = &val21
 }

 if val25, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val25 == nil {
  r.ApkCertsFile = nil
 } else {
  r.ApkCertsFile = val25.(android.Path)
 }

 var val27 int
 err = gobtools.DecodeInt(buf, &val27)
 if err != nil {
  return err
 }
 if val27 != -1 {
  r.JniLibs = make([]jniLib, val27)
  for val28 := 0; val28 < int(val27); val28++ {
   if err = r.JniLibs[val28].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 var val32 int
 err = gobtools.DecodeInt(buf, &val32)
 if err != nil {
  return err
 }
 if val32 != -1 {
  r.JniCoverageOutputs = make([]android.Path, val32)
  for val33 := 0; val33 < int(val32); val33++ {
   if val35, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val35 == nil {
    r.JniCoverageOutputs[val33] = nil
   } else {
    r.JniCoverageOutputs[val33] = val35.(android.Path)
   }
  }
 }

 if val37, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val37 == nil {
  r.PackedAdditionalOutputs = nil
 } else {
  r.PackedAdditionalOutputs = val37.(android.Path)
 }

 return err
}

var AppInfoGobRegId int16

func (r AppInfo) GetTypeId() int16 {
 return AppInfoGobRegId
}

func (r Certificate) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.Pem); err != nil {
  return err
 }
 if err = gobtools.EncodeInterface(ctx, buf, r.Key); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.presigned); err != nil {
  return err
 }
 return err
}

func (r Certificate) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.Certificate")
 hasher.WriteInt(3)
 hasher.WriteString(":java.android.Path")
 val1 := r.Pem == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.Pem); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.Pem == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.Pem.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.Pem.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.Key == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.Key); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.Key == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error { return r.Key.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.Key.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.bool")
 if r.presigned {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *Certificate) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.Pem = nil
 } else {
  r.Pem = val2.(android.Path)
 }
 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.Key = nil
 } else {
  r.Key = val4.(android.Path)
 }

 err = gobtools.DecodeBool(buf, &r.presigned)
 if err != nil {
  return err
 }

 return err
}

var CertificateGobRegId int16

func (r Certificate) GetTypeId() int16 {
 return CertificateGobRegId
}

func (r AppDepInSameApexChecker) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r AppDepInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AppDepInSameApexChecker")
 hasher.WriteInt(1)
 if err := r.BaseDepInSameApexChecker.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *AppDepInSameApexChecker) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var AppDepInSameApexCheckerGobRegId int16

func (r AppDepInSameApexChecker) GetTypeId() int16 {
 return AppDepInSameApexCheckerGobRegId
}

func (r AndroidAppCertificateInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.Certificate.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r AndroidAppCertificateInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AndroidAppCertificateInfo")
 hasher.WriteInt(1)
 if err := r.Certificate.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *AndroidAppCertificateInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.Certificate.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var AndroidAppCertificateInfoGobRegId int16

func (r AndroidAppCertificateInfo) GetTypeId() int16 {
 return AndroidAppCertificateInfoGobRegId
}

func (r BundleInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.Bundle); err != nil {
  return err
 }
 return err
}

func (r BundleInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.BundleInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":java.android.Path")
 val1 := r.Bundle == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.Bundle); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.Bundle == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.Bundle.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.Bundle.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *BundleInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.Bundle = nil
 } else {
  r.Bundle = val2.(android.Path)
 }

 return err
}

var BundleInfoGobRegId int16

func (r BundleInfo) GetTypeId() int16 {
 return BundleInfoGobRegId
}

// end of app.go

// begin of app_import.go
func init() {
 AppImportDepInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AppImportDepInSameApexChecker) })
}

func (r AppImportDepInSameApexChecker) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r AppImportDepInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AppImportDepInSameApexChecker")
 hasher.WriteInt(1)
 if err := r.BaseDepInSameApexChecker.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *AppImportDepInSameApexChecker) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var AppImportDepInSameApexCheckerGobRegId int16

func (r AppImportDepInSameApexChecker) GetTypeId() int16 {
 return AppImportDepInSameApexCheckerGobRegId
}

// end of app_import.go

// begin of base.go
func init() {
 OptionalDexJarPathGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(OptionalDexJarPath) })
 JavaDepInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaDepInSameApexChecker) })
 JarJarProviderDataGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JarJarProviderData) })
}

func (r OptionalDexJarPath) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeBool(buf, r.isSet); err != nil {
  return err
 }

 if err = r.path.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r OptionalDexJarPath) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.OptionalDexJarPath")
 hasher.WriteInt(2)
 hasher.WriteString(":.bool")
 if r.isSet {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 if err := r.path.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *OptionalDexJarPath) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeBool(buf, &r.isSet)
 if err != nil {
  return err
 }

 if err = r.path.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var OptionalDexJarPathGobRegId int16

func (r OptionalDexJarPath) GetTypeId() int16 {
 return OptionalDexJarPathGobRegId
}

func (r JavaDepInSameApexChecker) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r JavaDepInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaDepInSameApexChecker")
 hasher.WriteInt(1)
 if err := r.BaseDepInSameApexChecker.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *JavaDepInSameApexChecker) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var JavaDepInSameApexCheckerGobRegId int16

func (r JavaDepInSameApexChecker) GetTypeId() int16 {
 return JavaDepInSameApexCheckerGobRegId
}

func (r JarJarProviderData) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.Rename == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.Rename)); err != nil {
   return err
  }
  for val1, val2 := range r.Rename {
   if err = gobtools.EncodeString(buf, val1); err != nil {
    return err
   }
   if err = gobtools.EncodeString(buf, val2); err != nil {
    return err
   }
  }
 }
 return err
}

func (r JarJarProviderData) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JarJarProviderData")
 hasher.WriteInt(1)
 hasher.WriteString(":java.android.JarJarRename")
 hasher.WriteString(":.map[string]string")
 hasher.WriteInt(len(r.Rename))
 val1 := make([]string, 0, len(r.Rename))
 for val3 := range r.Rename {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":.string")
  hasher.WriteString(val2)
  hasher.WriteString(":.string")
  hasher.WriteString(r.Rename[val2])
 }
 return nil
}

func (r *JarJarProviderData) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.Rename = make(map[string]string, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   var val4 string
   var val5 string
   err = gobtools.DecodeString(buf, &val4)
   if err != nil {
    return err
   }
   err = gobtools.DecodeString(buf, &val5)
   if err != nil {
    return err
   }
   r.Rename[val4] = val5
  }
 }

 return err
}

var JarJarProviderDataGobRegId int16

func (r JarJarProviderData) GetTypeId() int16 {
 return JarJarProviderDataGobRegId
}

// end of base.go

// begin of bootclasspath.go
func init() {
 ApexVariantReferenceGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ApexVariantReference) })
}

func (r ApexVariantReference) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BpPrintableBase.Encode(ctx, buf); err != nil {
  return err
 }

 val1 := r.Apex == nil
 if err = gobtools.EncodeBool(buf, val1); err != nil {
  return err
 }
 if !val1 {
  if err = gobtools.EncodeString(buf, (*r.Apex)); err != nil {
   return err
  }
 }

 val2 := r.Module == nil
 if err = gobtools.EncodeBool(buf, val2); err != nil {
  return err
 }
 if !val2 {
  if err = gobtools.EncodeString(buf, (*r.Module)); err != nil {
   return err
  }
 }
 return err
}

func (r ApexVariantReference) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ApexVariantReference")
 hasher.WriteInt(3)
 if err := r.BpPrintableBase.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.*string")
 val1 := r.Apex == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  val2 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.Apex))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Apex)), val2); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*string")
 val3 := r.Module == nil
 if val3 {
  hasher.WriteByte(0)
 } else {
  val4 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.Module))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Module)), val4); err != nil {
   return err
  }
 }
 return nil
}

func (r *ApexVariantReference) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BpPrintableBase.Decode(ctx, buf); err != nil {
  return err
 }

 var val3 bool
 if err = gobtools.DecodeBool(buf, &val3); err != nil {
  return err
 }
 if !val3 {
  var val2 string
  err = gobtools.DecodeString(buf, &val2)
  if err != nil {
   return err
  }
  r.Apex = &val2
 }

 var val6 bool
 if err = gobtools.DecodeBool(buf, &val6); err != nil {
  return err
 }
 if !val6 {
  var val5 string
  err = gobtools.DecodeString(buf, &val5)
  if err != nil {
   return err
  }
  r.Module = &val5
 }

 return err
}

var ApexVariantReferenceGobRegId int16

func (r ApexVariantReference) GetTypeId() int16 {
 return ApexVariantReferenceGobRegId
}

// end of bootclasspath.go

// begin of bootclasspath_fragment.go
func init() {
 BootclasspathFragmentInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(BootclasspathFragmentInfo) })
 BootclasspathFragmentApexContentInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(BootclasspathFragmentApexContentInfo) })
 BootclasspathFragmentDepInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(BootclasspathFragmentDepInSameApexChecker) })
 ClasspathFragmentValidationInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ClasspathFragmentValidationInfo) })
}

func (r BootclasspathFragmentInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 val1 := r.ImageName == nil
 if err = gobtools.EncodeBool(buf, val1); err != nil {
  return err
 }
 if !val1 {
  if err = gobtools.EncodeString(buf, (*r.ImageName)); err != nil {
   return err
  }
 }

 if r.Contents == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.Contents)); err != nil {
   return err
  }
  for val2 := 0; val2 < len(r.Contents); val2++ {
   if err = gobtools.EncodeString(buf, r.Contents[val2]); err != nil {
    return err
   }
  }
 }

 if r.ApiStubLibs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ApiStubLibs)); err != nil {
   return err
  }
  for val3 := 0; val3 < len(r.ApiStubLibs); val3++ {
   if err = gobtools.EncodeString(buf, r.ApiStubLibs[val3]); err != nil {
    return err
   }
  }
 }

 if r.CorePlatformApiStubLibs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.CorePlatformApiStubLibs)); err != nil {
   return err
  }
  for val4 := 0; val4 < len(r.CorePlatformApiStubLibs); val4++ {
   if err = gobtools.EncodeString(buf, r.CorePlatformApiStubLibs[val4]); err != nil {
    return err
   }
  }
 }

 if r.Fragments == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.Fragments)); err != nil {
   return err
  }
  for val5 := 0; val5 < len(r.Fragments); val5++ {
   if err = r.Fragments[val5].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ProfilePathOnHost); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.DexPreoptProfileGuided); err != nil {
  return err
 }
 return err
}

func (r BootclasspathFragmentInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.BootclasspathFragmentInfo")
 hasher.WriteInt(7)
 hasher.WriteString(":.*string")
 val1 := r.ImageName == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  val2 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.ImageName))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ImageName)), val2); err != nil {
   return err
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Contents))
 for val3 := 0; val3 < len(r.Contents); val3++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Contents[val3])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.ApiStubLibs))
 for val4 := 0; val4 < len(r.ApiStubLibs); val4++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.ApiStubLibs[val4])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.CorePlatformApiStubLibs))
 for val5 := 0; val5 < len(r.CorePlatformApiStubLibs); val5++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.CorePlatformApiStubLibs[val5])
 }
 hasher.WriteString(":.[]ApexVariantReference")
 hasher.WriteInt(len(r.Fragments))
 for val6 := 0; val6 < len(r.Fragments); val6++ {
  if err := r.Fragments[val6].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":java.android.Path")
 val7 := r.ProfilePathOnHost == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ProfilePathOnHost); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val8 := r.ProfilePathOnHost == nil
    if val8 {
     hasher.WriteByte(0)
    } else {
     val9 := func(hasher *proptools.Hasher) error {
      return r.ProfilePathOnHost.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
      return err
     }
    }
   }
  } else {
   r.ProfilePathOnHost.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.bool")
 if r.DexPreoptProfileGuided {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *BootclasspathFragmentInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 bool
 if err = gobtools.DecodeBool(buf, &val2); err != nil {
  return err
 }
 if !val2 {
  var val1 string
  err = gobtools.DecodeString(buf, &val1)
  if err != nil {
   return err
  }
  r.ImageName = &val1
 }

 var val5 int
 err = gobtools.DecodeInt(buf, &val5)
 if err != nil {
  return err
 }
 if val5 != -1 {
  r.Contents = make([]string, val5)
  for val6 := 0; val6 < int(val5); val6++ {
   err = gobtools.DecodeString(buf, &r.Contents[val6])
   if err != nil {
    return err
   }
  }
 }

 var val9 int
 err = gobtools.DecodeInt(buf, &val9)
 if err != nil {
  return err
 }
 if val9 != -1 {
  r.ApiStubLibs = make([]string, val9)
  for val10 := 0; val10 < int(val9); val10++ {
   err = gobtools.DecodeString(buf, &r.ApiStubLibs[val10])
   if err != nil {
    return err
   }
  }
 }

 var val13 int
 err = gobtools.DecodeInt(buf, &val13)
 if err != nil {
  return err
 }
 if val13 != -1 {
  r.CorePlatformApiStubLibs = make([]string, val13)
  for val14 := 0; val14 < int(val13); val14++ {
   err = gobtools.DecodeString(buf, &r.CorePlatformApiStubLibs[val14])
   if err != nil {
    return err
   }
  }
 }

 var val17 int
 err = gobtools.DecodeInt(buf, &val17)
 if err != nil {
  return err
 }
 if val17 != -1 {
  r.Fragments = make([]ApexVariantReference, val17)
  for val18 := 0; val18 < int(val17); val18++ {
   if err = r.Fragments[val18].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if val21, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val21 == nil {
  r.ProfilePathOnHost = nil
 } else {
  r.ProfilePathOnHost = val21.(android.Path)
 }

 err = gobtools.DecodeBool(buf, &r.DexPreoptProfileGuided)
 if err != nil {
  return err
 }

 return err
}

var BootclasspathFragmentInfoGobRegId int16

func (r BootclasspathFragmentInfo) GetTypeId() int16 {
 return BootclasspathFragmentInfoGobRegId
}

func (r BootclasspathFragmentApexContentInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.contentModuleDexJarPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.contentModuleDexJarPaths)); err != nil {
   return err
  }
  for val1, val2 := range r.contentModuleDexJarPaths {
   if err = gobtools.EncodeString(buf, val1); err != nil {
    return err
   }
   if err = gobtools.EncodeInterface(ctx, buf, val2); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.profilePathOnHost); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.profileInstallPathInApex); err != nil {
  return err
 }
 return err
}

func (r BootclasspathFragmentApexContentInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.BootclasspathFragmentApexContentInfo")
 hasher.WriteInt(3)
 hasher.WriteString(":java.bootDexJarByModule")
 hasher.WriteString(":.map[string]android.Path")
 hasher.WriteInt(len(r.contentModuleDexJarPaths))
 val1 := make([]string, 0, len(r.contentModuleDexJarPaths))
 for val3 := range r.contentModuleDexJarPaths {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":.string")
  hasher.WriteString(val2)
  hasher.WriteString(":java.android.Path")
  val4 := r.contentModuleDexJarPaths[val2] == nil
  if val4 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.contentModuleDexJarPaths[val2]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val5 := r.contentModuleDexJarPaths[val2] == nil
     if val5 {
      hasher.WriteByte(0)
     } else {
      val6 := func(hasher *proptools.Hasher) error {
       return r.contentModuleDexJarPaths[val2].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
       return err
      }
     }
    }
   } else {
    r.contentModuleDexJarPaths[val2].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Path")
 val7 := r.profilePathOnHost == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.profilePathOnHost); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val8 := r.profilePathOnHost == nil
    if val8 {
     hasher.WriteByte(0)
    } else {
     val9 := func(hasher *proptools.Hasher) error {
      return r.profilePathOnHost.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
      return err
     }
    }
   }
  } else {
   r.profilePathOnHost.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.profileInstallPathInApex)
 return nil
}

func (r *BootclasspathFragmentApexContentInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.contentModuleDexJarPaths = make(map[string]android.Path, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   var val4 string
   var val5 android.Path
   err = gobtools.DecodeString(buf, &val4)
   if err != nil {
    return err
   }
   if val8, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val8 == nil {
    val5 = nil
   } else {
    val5 = val8.(android.Path)
   }
   r.contentModuleDexJarPaths[val4] = val5
  }
 }

 if val10, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val10 == nil {
  r.profilePathOnHost = nil
 } else {
  r.profilePathOnHost = val10.(android.Path)
 }

 err = gobtools.DecodeString(buf, &r.profileInstallPathInApex)
 if err != nil {
  return err
 }

 return err
}

var BootclasspathFragmentApexContentInfoGobRegId int16

func (r BootclasspathFragmentApexContentInfo) GetTypeId() int16 {
 return BootclasspathFragmentApexContentInfoGobRegId
}

func (r BootclasspathFragmentDepInSameApexChecker) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r BootclasspathFragmentDepInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.BootclasspathFragmentDepInSameApexChecker")
 hasher.WriteInt(1)
 if err := r.BaseDepInSameApexChecker.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *BootclasspathFragmentDepInSameApexChecker) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var BootclasspathFragmentDepInSameApexCheckerGobRegId int16

func (r BootclasspathFragmentDepInSameApexChecker) GetTypeId() int16 {
 return BootclasspathFragmentDepInSameApexCheckerGobRegId
}

func (r ClasspathFragmentValidationInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeString(buf, r.ClasspathFragmentModuleName); err != nil {
  return err
 }

 if r.UnknownJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.UnknownJars)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.UnknownJars); val1++ {
   if err = gobtools.EncodeString(buf, r.UnknownJars[val1]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r ClasspathFragmentValidationInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ClasspathFragmentValidationInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.string")
 hasher.WriteString(r.ClasspathFragmentModuleName)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.UnknownJars))
 for val1 := 0; val1 < len(r.UnknownJars); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.UnknownJars[val1])
 }
 return nil
}

func (r *ClasspathFragmentValidationInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeString(buf, &r.ClasspathFragmentModuleName)
 if err != nil {
  return err
 }

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.UnknownJars = make([]string, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   err = gobtools.DecodeString(buf, &r.UnknownJars[val4])
   if err != nil {
    return err
   }
  }
 }

 return err
}

var ClasspathFragmentValidationInfoGobRegId int16

func (r ClasspathFragmentValidationInfo) GetTypeId() int16 {
 return ClasspathFragmentValidationInfoGobRegId
}

// end of bootclasspath_fragment.go

// begin of classpath_fragment.go
func init() {
 ClasspathFragmentProtoContentInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ClasspathFragmentProtoContentInfo) })
}

func (r ClasspathFragmentProtoContentInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeBool(buf, r.ClasspathFragmentProtoGenerated); err != nil {
  return err
 }

 if err = r.ClasspathFragmentProtoContents.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.ClasspathFragmentProtoOutput.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.ClasspathFragmentProtoInstallDir.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r ClasspathFragmentProtoContentInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ClasspathFragmentProtoContentInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":.bool")
 if r.ClasspathFragmentProtoGenerated {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 if err := r.ClasspathFragmentProtoContents.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.ClasspathFragmentProtoOutput.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.ClasspathFragmentProtoInstallDir.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *ClasspathFragmentProtoContentInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeBool(buf, &r.ClasspathFragmentProtoGenerated)
 if err != nil {
  return err
 }

 if err = r.ClasspathFragmentProtoContents.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.ClasspathFragmentProtoOutput.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.ClasspathFragmentProtoInstallDir.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var ClasspathFragmentProtoContentInfoGobRegId int16

func (r ClasspathFragmentProtoContentInfo) GetTypeId() int16 {
 return ClasspathFragmentProtoContentInfoGobRegId
}

// end of classpath_fragment.go

// begin of dex.go
func init() {
 ProguardInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ProguardInfo) })
 ProguardInfosGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ProguardInfos) })
}

func (r ProguardInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeString(buf, r.ModuleName); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.Class); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ProguardDictionary); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ProguardUsageZip); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ClassesJar); err != nil {
  return err
 }
 return err
}

func (r ProguardInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ProguardInfo")
 hasher.WriteInt(5)
 hasher.WriteString(":.string")
 hasher.WriteString(r.ModuleName)
 hasher.WriteString(":.string")
 hasher.WriteString(r.Class)
 hasher.WriteString(":java.android.Path")
 val1 := r.ProguardDictionary == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ProguardDictionary); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.ProguardDictionary == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.ProguardDictionary.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.ProguardDictionary.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.ProguardUsageZip == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ProguardUsageZip); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.ProguardUsageZip == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error {
      return r.ProguardUsageZip.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.ProguardUsageZip.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val7 := r.ClassesJar == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ClassesJar); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val8 := r.ClassesJar == nil
    if val8 {
     hasher.WriteByte(0)
    } else {
     val9 := func(hasher *proptools.Hasher) error { return r.ClassesJar.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
      return err
     }
    }
   }
  } else {
   r.ClassesJar.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *ProguardInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeString(buf, &r.ModuleName)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.Class)
 if err != nil {
  return err
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.ProguardDictionary = nil
 } else {
  r.ProguardDictionary = val4.(android.Path)
 }

 if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val6 == nil {
  r.ProguardUsageZip = nil
 } else {
  r.ProguardUsageZip = val6.(android.Path)
 }

 if val8, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val8 == nil {
  r.ClassesJar = nil
 } else {
  r.ClassesJar = val8.(android.Path)
 }

 return err
}

var ProguardInfoGobRegId int16

func (r ProguardInfo) GetTypeId() int16 {
 return ProguardInfoGobRegId
}

func (r ProguardInfos) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r); val1++ {
   if err = r[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }
 return err
}

func (r ProguardInfos) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":.[]ProguardInfo")
 hasher.WriteInt(len(r))
 for val1 := 0; val1 < len(r); val1++ {
  if err := r[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *ProguardInfos) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  (*r) = make([]ProguardInfo, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   if err = (*r)[val3].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 return err
}

var ProguardInfosGobRegId int16

func (r ProguardInfos) GetTypeId() int16 {
 return ProguardInfosGobRegId
}

// end of dex.go

// begin of dexpreopt.go
func init() {
 DexpreopterInstallGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(DexpreopterInstall) })
}

func (r DexpreopterInstall) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.OutputPathOnHost); err != nil {
  return err
 }

 if err = r.InstallDirOnDevice.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.InstallFileOnDevice); err != nil {
  return err
 }
 return err
}

func (r DexpreopterInstall) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.DexpreopterInstall")
 hasher.WriteInt(3)
 hasher.WriteString(":java.android.Path")
 val1 := r.OutputPathOnHost == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.OutputPathOnHost); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.OutputPathOnHost == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.OutputPathOnHost.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.OutputPathOnHost.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.InstallDirOnDevice.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.InstallFileOnDevice)
 return nil
}

func (r *DexpreopterInstall) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.OutputPathOnHost = nil
 } else {
  r.OutputPathOnHost = val2.(android.Path)
 }

 if err = r.InstallDirOnDevice.Decode(ctx, buf); err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.InstallFileOnDevice)
 if err != nil {
  return err
 }

 return err
}

var DexpreopterInstallGobRegId int16

func (r DexpreopterInstall) GetTypeId() int16 {
 return DexpreopterInstallGobRegId
}

// end of dexpreopt.go

// begin of dexpreopt_bootjars.go
func init() {
 artBootImageHostInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(artBootImageHostInfo) })
 profileInstallInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(profileInstallInfo) })
}

func (r artBootImageHostInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.installs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.installs)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.installs); val1++ {
   if err = r.installs[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }
 return err
}

func (r artBootImageHostInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.artBootImageHostInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":java.android.RuleBuilderInstalls")
 hasher.WriteString(":.[]RuleBuilderInstall")
 hasher.WriteInt(len(r.installs))
 for val1 := 0; val1 < len(r.installs); val1++ {
  if err := r.installs[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *artBootImageHostInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.installs = make([]android.RuleBuilderInstall, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if err = r.installs[val4].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 return err
}

var artBootImageHostInfoGobRegId int16

func (r artBootImageHostInfo) GetTypeId() int16 {
 return artBootImageHostInfoGobRegId
}

func (r profileInstallInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.profileInstalls == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.profileInstalls)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.profileInstalls); val1++ {
   if err = r.profileInstalls[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if err = r.profileLicenseMetadataFile.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r profileInstallInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.profileInstallInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":java.android.RuleBuilderInstalls")
 hasher.WriteString(":.[]RuleBuilderInstall")
 hasher.WriteInt(len(r.profileInstalls))
 for val1 := 0; val1 < len(r.profileInstalls); val1++ {
  if err := r.profileInstalls[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 if err := r.profileLicenseMetadataFile.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *profileInstallInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.profileInstalls = make([]android.RuleBuilderInstall, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if err = r.profileInstalls[val4].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if err = r.profileLicenseMetadataFile.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var profileInstallInfoGobRegId int16

func (r profileInstallInfo) GetTypeId() int16 {
 return profileInstallInfoGobRegId
}

// end of dexpreopt_bootjars.go

// begin of droiddoc.go
func init() {
 ExportedDroiddocDirInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ExportedDroiddocDirInfo) })
}

func (r ExportedDroiddocDirInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.Deps == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.Deps)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.Deps); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.Deps[val1]); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.Dir); err != nil {
  return err
 }
 return err
}

func (r ExportedDroiddocDirInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ExportedDroiddocDirInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.Deps))
 for val1 := 0; val1 < len(r.Deps); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.Deps[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.Deps[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.Deps[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error { return r.Deps[val1].(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.Deps[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Path")
 val5 := r.Dir == nil
 if val5 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.Dir); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val6 := r.Dir == nil
    if val6 {
     hasher.WriteByte(0)
    } else {
     val7 := func(hasher *proptools.Hasher) error { return r.Dir.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
      return err
     }
    }
   }
  } else {
   r.Dir.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *ExportedDroiddocDirInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.Deps = make([]android.Path, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val6 == nil {
    r.Deps[val4] = nil
   } else {
    r.Deps[val4] = val6.(android.Path)
   }
  }
 }

 if val8, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val8 == nil {
  r.Dir = nil
 } else {
  r.Dir = val8.(android.Path)
 }

 return err
}

var ExportedDroiddocDirInfoGobRegId int16

func (r ExportedDroiddocDirInfo) GetTypeId() int16 {
 return ExportedDroiddocDirInfoGobRegId
}

// end of droiddoc.go

// begin of droidstubs.go
func init() {
 StubsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(StubsInfo) })
 DroidStubsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(DroidStubsInfo) })
 StubsSrcInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(StubsSrcInfo) })
 UpdateApiInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(UpdateApiInfo) })
}

func (r StubsInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.ApiVersionsXml); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.AnnotationsZip); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ApiFile); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.RemovedApiFile); err != nil {
  return err
 }
 return err
}

func (r StubsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.StubsInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":java.android.Path")
 val1 := r.ApiVersionsXml == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ApiVersionsXml); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.ApiVersionsXml == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.ApiVersionsXml.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.ApiVersionsXml.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.AnnotationsZip == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.AnnotationsZip); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.AnnotationsZip == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error {
      return r.AnnotationsZip.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.AnnotationsZip.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val7 := r.ApiFile == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ApiFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val8 := r.ApiFile == nil
    if val8 {
     hasher.WriteByte(0)
    } else {
     val9 := func(hasher *proptools.Hasher) error { return r.ApiFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
      return err
     }
    }
   }
  } else {
   r.ApiFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val10 := r.RemovedApiFile == nil
 if val10 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.RemovedApiFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val11 := r.RemovedApiFile == nil
    if val11 {
     hasher.WriteByte(0)
    } else {
     val12 := func(hasher *proptools.Hasher) error {
      return r.RemovedApiFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val12); err != nil {
      return err
     }
    }
   }
  } else {
   r.RemovedApiFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *StubsInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.ApiVersionsXml = nil
 } else {
  r.ApiVersionsXml = val2.(android.Path)
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.AnnotationsZip = nil
 } else {
  r.AnnotationsZip = val4.(android.Path)
 }

 if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val6 == nil {
  r.ApiFile = nil
 } else {
  r.ApiFile = val6.(android.Path)
 }

 if val8, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val8 == nil {
  r.RemovedApiFile = nil
 } else {
  r.RemovedApiFile = val8.(android.Path)
 }

 return err
}

var StubsInfoGobRegId int16

func (r StubsInfo) GetTypeId() int16 {
 return StubsInfoGobRegId
}

func (r DroidStubsInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.CheckedInApiFile); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.CheckedInRemovedApiFile); err != nil {
  return err
 }

 if r.AconfigProtoFiles == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.AconfigProtoFiles)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.AconfigProtoFiles); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.AconfigProtoFiles[val1]); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.CurrentApiTimestamp); err != nil {
  return err
 }

 if err = r.EverythingStubsInfo.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.ExportableStubsInfo.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r DroidStubsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.DroidStubsInfo")
 hasher.WriteInt(6)
 hasher.WriteString(":java.android.Path")
 val1 := r.CheckedInApiFile == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.CheckedInApiFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.CheckedInApiFile == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.CheckedInApiFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.CheckedInApiFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.CheckedInRemovedApiFile == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.CheckedInRemovedApiFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.CheckedInRemovedApiFile == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error {
      return r.CheckedInRemovedApiFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.CheckedInRemovedApiFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.AconfigProtoFiles))
 for val7 := 0; val7 < len(r.AconfigProtoFiles); val7++ {
  hasher.WriteString("android/soong/android:android.Path")
  val8 := r.AconfigProtoFiles[val7] == nil
  if val8 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.AconfigProtoFiles[val7]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val9 := r.AconfigProtoFiles[val7] == nil
     if val9 {
      hasher.WriteByte(0)
     } else {
      val10 := func(hasher *proptools.Hasher) error {
       return r.AconfigProtoFiles[val7].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val10); err != nil {
       return err
      }
     }
    }
   } else {
    r.AconfigProtoFiles[val7].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Path")
 val11 := r.CurrentApiTimestamp == nil
 if val11 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.CurrentApiTimestamp); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val12 := r.CurrentApiTimestamp == nil
    if val12 {
     hasher.WriteByte(0)
    } else {
     val13 := func(hasher *proptools.Hasher) error {
      return r.CurrentApiTimestamp.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val13); err != nil {
      return err
     }
    }
   }
  } else {
   r.CurrentApiTimestamp.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.EverythingStubsInfo.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.ExportableStubsInfo.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *DroidStubsInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.CheckedInApiFile = nil
 } else {
  r.CheckedInApiFile = val2.(android.Path)
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.CheckedInRemovedApiFile = nil
 } else {
  r.CheckedInRemovedApiFile = val4.(android.Path)
 }

 var val7 int
 err = gobtools.DecodeInt(buf, &val7)
 if err != nil {
  return err
 }
 if val7 != -1 {
  r.AconfigProtoFiles = make([]android.Path, val7)
  for val8 := 0; val8 < int(val7); val8++ {
   if val10, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val10 == nil {
    r.AconfigProtoFiles[val8] = nil
   } else {
    r.AconfigProtoFiles[val8] = val10.(android.Path)
   }
  }
 }

 if val12, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val12 == nil {
  r.CurrentApiTimestamp = nil
 } else {
  r.CurrentApiTimestamp = val12.(android.Path)
 }

 if err = r.EverythingStubsInfo.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.ExportableStubsInfo.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var DroidStubsInfoGobRegId int16

func (r DroidStubsInfo) GetTypeId() int16 {
 return DroidStubsInfoGobRegId
}

func (r StubsSrcInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.EverythingStubsSrcJar); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ExportableStubsSrcJar); err != nil {
  return err
 }
 return err
}

func (r StubsSrcInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.StubsSrcInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":java.android.Path")
 val1 := r.EverythingStubsSrcJar == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.EverythingStubsSrcJar); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.EverythingStubsSrcJar == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.EverythingStubsSrcJar.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.EverythingStubsSrcJar.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.ExportableStubsSrcJar == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ExportableStubsSrcJar); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.ExportableStubsSrcJar == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error {
      return r.ExportableStubsSrcJar.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.ExportableStubsSrcJar.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *StubsSrcInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.EverythingStubsSrcJar = nil
 } else {
  r.EverythingStubsSrcJar = val2.(android.Path)
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.ExportableStubsSrcJar = nil
 } else {
  r.ExportableStubsSrcJar = val4.(android.Path)
 }

 return err
}

var StubsSrcInfoGobRegId int16

func (r StubsSrcInfo) GetTypeId() int16 {
 return StubsSrcInfoGobRegId
}

func (r UpdateApiInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeString(buf, r.Name); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.SourceApiFile); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.GeneratedApiFile); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.SourceRemovedFile); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.GeneratedRemovedFile); err != nil {
  return err
 }
 return err
}

func (r UpdateApiInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.UpdateApiInfo")
 hasher.WriteInt(5)
 hasher.WriteString(":.string")
 hasher.WriteString(r.Name)
 hasher.WriteString(":java.android.Path")
 val1 := r.SourceApiFile == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.SourceApiFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.SourceApiFile == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.SourceApiFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.SourceApiFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.GeneratedApiFile == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.GeneratedApiFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.GeneratedApiFile == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error {
      return r.GeneratedApiFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.GeneratedApiFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val7 := r.SourceRemovedFile == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.SourceRemovedFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val8 := r.SourceRemovedFile == nil
    if val8 {
     hasher.WriteByte(0)
    } else {
     val9 := func(hasher *proptools.Hasher) error {
      return r.SourceRemovedFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
      return err
     }
    }
   }
  } else {
   r.SourceRemovedFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val10 := r.GeneratedRemovedFile == nil
 if val10 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.GeneratedRemovedFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val11 := r.GeneratedRemovedFile == nil
    if val11 {
     hasher.WriteByte(0)
    } else {
     val12 := func(hasher *proptools.Hasher) error {
      return r.GeneratedRemovedFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val12); err != nil {
      return err
     }
    }
   }
  } else {
   r.GeneratedRemovedFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *UpdateApiInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeString(buf, &r.Name)
 if err != nil {
  return err
 }

 if val3, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val3 == nil {
  r.SourceApiFile = nil
 } else {
  r.SourceApiFile = val3.(android.Path)
 }

 if val5, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val5 == nil {
  r.GeneratedApiFile = nil
 } else {
  r.GeneratedApiFile = val5.(android.Path)
 }

 if val7, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val7 == nil {
  r.SourceRemovedFile = nil
 } else {
  r.SourceRemovedFile = val7.(android.Path)
 }

 if val9, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val9 == nil {
  r.GeneratedRemovedFile = nil
 } else {
  r.GeneratedRemovedFile = val9.(android.Path)
 }

 return err
}

var UpdateApiInfoGobRegId int16

func (r UpdateApiInfo) GetTypeId() int16 {
 return UpdateApiInfoGobRegId
}

// end of droidstubs.go

// begin of fuzz.go
func init() {
 JavaFuzzTestInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaFuzzTestInfo) })
}

func (r JavaFuzzTestInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.JniFilePaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.JniFilePaths)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.JniFilePaths); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.JniFilePaths[val1]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r JavaFuzzTestInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaFuzzTestInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.JniFilePaths))
 for val1 := 0; val1 < len(r.JniFilePaths); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.JniFilePaths[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.JniFilePaths[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.JniFilePaths[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.JniFilePaths[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.JniFilePaths[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 return nil
}

func (r *JavaFuzzTestInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.JniFilePaths = make([]android.Path, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val6 == nil {
    r.JniFilePaths[val4] = nil
   } else {
    r.JniFilePaths[val4] = val6.(android.Path)
   }
  }
 }

 return err
}

var JavaFuzzTestInfoGobRegId int16

func (r JavaFuzzTestInfo) GetTypeId() int16 {
 return JavaFuzzTestInfoGobRegId
}

// end of fuzz.go

// begin of hiddenapi_modular.go
func init() {
 HiddenAPIScopeGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(HiddenAPIScope) })
 FlagFilesByCategoryGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(FlagFilesByCategory) })
 HiddenAPIInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(HiddenAPIInfo) })
 HiddenAPIInfoForSdkGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(HiddenAPIInfoForSdk) })
 ModuleStubDexJarsGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ModuleStubDexJars) })
 HiddenAPIPropertyInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(HiddenAPIPropertyInfo) })
 HiddenAPIFlagOutputGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(HiddenAPIFlagOutput) })
 SignatureCsvSubsetGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SignatureCsvSubset) })
 SignatureCsvSubsetsGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SignatureCsvSubsets) })
}

func (r HiddenAPIScope) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeString(buf, r.name); err != nil {
  return err
 }

 if err = gobtools.EncodeInt(buf, int(r.sdkKind)); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.hiddenAPIListOption); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.nonUpdatableSourceModule); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.nonUpdatableFromTextModule); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.nonUpdatablePrebuiltModule); err != nil {
  return err
 }
 return err
}

func (r HiddenAPIScope) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.HiddenAPIScope")
 hasher.WriteInt(6)
 hasher.WriteString(":.string")
 hasher.WriteString(r.name)
 hasher.WriteString(":java.android.SdkKind")
 hasher.WriteString(":.int")
 hasher.WriteUint64(uint64(int(r.sdkKind)))
 hasher.WriteString(":.string")
 hasher.WriteString(r.hiddenAPIListOption)
 hasher.WriteString(":.string")
 hasher.WriteString(r.nonUpdatableSourceModule)
 hasher.WriteString(":.string")
 hasher.WriteString(r.nonUpdatableFromTextModule)
 hasher.WriteString(":.string")
 hasher.WriteString(r.nonUpdatablePrebuiltModule)
 return nil
}

func (r *HiddenAPIScope) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeString(buf, &r.name)
 if err != nil {
  return err
 }

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 r.sdkKind = android.SdkKind(val3)

 err = gobtools.DecodeString(buf, &r.hiddenAPIListOption)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.nonUpdatableSourceModule)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.nonUpdatableFromTextModule)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.nonUpdatablePrebuiltModule)
 if err != nil {
  return err
 }

 return err
}

var HiddenAPIScopeGobRegId int16

func (r HiddenAPIScope) GetTypeId() int16 {
 return HiddenAPIScopeGobRegId
}

func (r FlagFilesByCategory) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r)); err != nil {
   return err
  }
  for val1, val2 := range r {
   if err = gobtools.EncodeInt(buf, int(val1)); err != nil {
    return err
   }
   if val2 == nil {
    if err = gobtools.EncodeInt(buf, -1); err != nil {
     return err
    }
   } else {
    if err = gobtools.EncodeInt(buf, len(val2)); err != nil {
     return err
    }
    for val3 := 0; val3 < len(val2); val3++ {
     if err = gobtools.EncodeInterface(ctx, buf, val2[val3]); err != nil {
      return err
     }
    }
   }
  }
 }
 return err
}

func (r FlagFilesByCategory) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":.map[hiddenAPIFlagFileCategory]android.Paths")
 hasher.WriteInt(len(r))
 val1 := make([]hiddenAPIFlagFileCategory, 0, len(r))
 for val3 := range r {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":java.hiddenAPIFlagFileCategory")
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(int(val2)))
  hasher.WriteString(":java.android.Paths")
  hasher.WriteString(":.[]Path")
  hasher.WriteInt(len(r[val2]))
  for val4 := 0; val4 < len(r[val2]); val4++ {
   hasher.WriteString("android/soong/android:android.Path")
   val5 := r[val2][val4] == nil
   if val5 {
    hasher.WriteByte(0)
   } else {
    if v := reflect.ValueOf(r[val2][val4]); v.Kind() == reflect.Ptr {
     if v.IsNil() {
      panic(fmt.Errorf("nil pointer is not supported in interface"))
     } else {
      val6 := r[val2][val4] == nil
      if val6 {
       hasher.WriteByte(0)
      } else {
       val7 := func(hasher *proptools.Hasher) error { return r[val2][val4].(proptools.CustomHash).CustomHash(hasher) }
       if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
        return err
       }
      }
     }
    } else {
     r[val2][val4].(proptools.CustomHash).CustomHash(hasher)
    }
   }
  }
 }
 return nil
}

func (r *FlagFilesByCategory) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val1 int
 err = gobtools.DecodeInt(buf, &val1)
 if err != nil {
  return err
 }
 if val1 != -1 {
  (*r) = make(map[hiddenAPIFlagFileCategory]android.Paths, val1)
  for val2 := 0; val2 < int(val1); val2++ {
   var val3 hiddenAPIFlagFileCategory
   var val4 android.Paths
   var val6 int
   err = gobtools.DecodeInt(buf, &val6)
   if err != nil {
    return err
   }
   val3 = hiddenAPIFlagFileCategory(val6)
   var val10 int
   err = gobtools.DecodeInt(buf, &val10)
   if err != nil {
    return err
   }
   if val10 != -1 {
    val4 = make([]android.Path, val10)
    for val11 := 0; val11 < int(val10); val11++ {
     if val13, err := gobtools.DecodeInterface(ctx, buf); err != nil {
      return err
     } else if val13 == nil {
      val4[val11] = nil
     } else {
      val4[val11] = val13.(android.Path)
     }
    }
   }
   (*r)[val3] = val4
  }
 }

 return err
}

var FlagFilesByCategoryGobRegId int16

func (r FlagFilesByCategory) GetTypeId() int16 {
 return FlagFilesByCategoryGobRegId
}

func (r HiddenAPIInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.FlagFilesByCategory == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.FlagFilesByCategory)); err != nil {
   return err
  }
  for val1, val2 := range r.FlagFilesByCategory {
   if err = gobtools.EncodeInt(buf, int(val1)); err != nil {
    return err
   }
   if val2 == nil {
    if err = gobtools.EncodeInt(buf, -1); err != nil {
     return err
    }
   } else {
    if err = gobtools.EncodeInt(buf, len(val2)); err != nil {
     return err
    }
    for val3 := 0; val3 < len(val2); val3++ {
     if err = gobtools.EncodeInterface(ctx, buf, val2[val3]); err != nil {
      return err
     }
    }
   }
  }
 }

 if r.TransitiveStubDexJarsByScope == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.TransitiveStubDexJarsByScope)); err != nil {
   return err
  }
  for val4, val5 := range r.TransitiveStubDexJarsByScope {
   if err = gobtools.EncodeString(buf, val4); err != nil {
    return err
   }
   if val5 == nil {
    if err = gobtools.EncodeInt(buf, -1); err != nil {
     return err
    }
   } else {
    if err = gobtools.EncodeInt(buf, len(val5)); err != nil {
     return err
    }
    for val6, val7 := range val5 {
     if err = gobtools.EncodeString(buf, val6); err != nil {
      return err
     }
     if err = gobtools.EncodeInterface(ctx, buf, val7); err != nil {
      return err
     }
    }
   }
  }
 }

 if err = r.HiddenAPIFlagOutput.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r HiddenAPIInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.HiddenAPIInfo")
 hasher.WriteInt(3)
 hasher.WriteString(":java.FlagFilesByCategory")
 hasher.WriteString(":.map[hiddenAPIFlagFileCategory]android.Paths")
 hasher.WriteInt(len(r.FlagFilesByCategory))
 val1 := make([]hiddenAPIFlagFileCategory, 0, len(r.FlagFilesByCategory))
 for val3 := range r.FlagFilesByCategory {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":java.hiddenAPIFlagFileCategory")
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(int(val2)))
  hasher.WriteString(":java.android.Paths")
  hasher.WriteString(":.[]Path")
  hasher.WriteInt(len(r.FlagFilesByCategory[val2]))
  for val4 := 0; val4 < len(r.FlagFilesByCategory[val2]); val4++ {
   hasher.WriteString("android/soong/android:android.Path")
   val5 := r.FlagFilesByCategory[val2][val4] == nil
   if val5 {
    hasher.WriteByte(0)
   } else {
    if v := reflect.ValueOf(r.FlagFilesByCategory[val2][val4]); v.Kind() == reflect.Ptr {
     if v.IsNil() {
      panic(fmt.Errorf("nil pointer is not supported in interface"))
     } else {
      val6 := r.FlagFilesByCategory[val2][val4] == nil
      if val6 {
       hasher.WriteByte(0)
      } else {
       val7 := func(hasher *proptools.Hasher) error {
        return r.FlagFilesByCategory[val2][val4].(proptools.CustomHash).CustomHash(hasher)
       }
       if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
        return err
       }
      }
     }
    } else {
     r.FlagFilesByCategory[val2][val4].(proptools.CustomHash).CustomHash(hasher)
    }
   }
  }
 }
 hasher.WriteString(":java.StubDexJarsByModule")
 hasher.WriteString(":.map[string]ModuleStubDexJars")
 hasher.WriteInt(len(r.TransitiveStubDexJarsByScope))
 val8 := make([]string, 0, len(r.TransitiveStubDexJarsByScope))
 for val10 := range r.TransitiveStubDexJarsByScope {
  val8 = append(val8, val10)
 }
 proptools.SortOrdered(val8)
 for _, val9 := range val8 {
  hasher.WriteString(":.string")
  hasher.WriteString(val9)
  hasher.WriteString(":java.ModuleStubDexJars")
  hasher.WriteString(":.map[string]android.Path")
  hasher.WriteInt(len(r.TransitiveStubDexJarsByScope[val9]))
  val11 := make([]string, 0, len(r.TransitiveStubDexJarsByScope[val9]))
  for val13 := range r.TransitiveStubDexJarsByScope[val9] {
   val11 = append(val11, val13)
  }
  proptools.SortOrdered(val11)
  for _, val12 := range val11 {
   hasher.WriteString(":.string")
   hasher.WriteString(val12)
   hasher.WriteString(":java.android.Path")
   val14 := r.TransitiveStubDexJarsByScope[val9][val12] == nil
   if val14 {
    hasher.WriteByte(0)
   } else {
    if v := reflect.ValueOf(r.TransitiveStubDexJarsByScope[val9][val12]); v.Kind() == reflect.Ptr {
     if v.IsNil() {
      panic(fmt.Errorf("nil pointer is not supported in interface"))
     } else {
      val15 := r.TransitiveStubDexJarsByScope[val9][val12] == nil
      if val15 {
       hasher.WriteByte(0)
      } else {
       val16 := func(hasher *proptools.Hasher) error {
        return r.TransitiveStubDexJarsByScope[val9][val12].(proptools.CustomHash).CustomHash(hasher)
       }
       if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val16); err != nil {
        return err
       }
      }
     }
    } else {
     r.TransitiveStubDexJarsByScope[val9][val12].(proptools.CustomHash).CustomHash(hasher)
    }
   }
  }
 }
 if err := r.HiddenAPIFlagOutput.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *HiddenAPIInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.FlagFilesByCategory = make(map[hiddenAPIFlagFileCategory]android.Paths, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   var val4 hiddenAPIFlagFileCategory
   var val5 android.Paths
   var val7 int
   err = gobtools.DecodeInt(buf, &val7)
   if err != nil {
    return err
   }
   val4 = hiddenAPIFlagFileCategory(val7)
   var val11 int
   err = gobtools.DecodeInt(buf, &val11)
   if err != nil {
    return err
   }
   if val11 != -1 {
    val5 = make([]android.Path, val11)
    for val12 := 0; val12 < int(val11); val12++ {
     if val14, err := gobtools.DecodeInterface(ctx, buf); err != nil {
      return err
     } else if val14 == nil {
      val5[val12] = nil
     } else {
      val5[val12] = val14.(android.Path)
     }
    }
   }
   r.FlagFilesByCategory[val4] = val5
  }
 }

 var val16 int
 err = gobtools.DecodeInt(buf, &val16)
 if err != nil {
  return err
 }
 if val16 != -1 {
  r.TransitiveStubDexJarsByScope = make(map[string]ModuleStubDexJars, val16)
  for val17 := 0; val17 < int(val16); val17++ {
   var val18 string
   var val19 ModuleStubDexJars
   err = gobtools.DecodeString(buf, &val18)
   if err != nil {
    return err
   }
   var val22 int
   err = gobtools.DecodeInt(buf, &val22)
   if err != nil {
    return err
   }
   if val22 != -1 {
    val19 = make(map[string]android.Path, val22)
    for val23 := 0; val23 < int(val22); val23++ {
     var val24 string
     var val25 android.Path
     err = gobtools.DecodeString(buf, &val24)
     if err != nil {
      return err
     }
     if val28, err := gobtools.DecodeInterface(ctx, buf); err != nil {
      return err
     } else if val28 == nil {
      val25 = nil
     } else {
      val25 = val28.(android.Path)
     }
     val19[val24] = val25
    }
   }
   r.TransitiveStubDexJarsByScope[val18] = val19
  }
 }

 if err = r.HiddenAPIFlagOutput.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var HiddenAPIInfoGobRegId int16

func (r HiddenAPIInfo) GetTypeId() int16 {
 return HiddenAPIInfoGobRegId
}

func (r HiddenAPIInfoForSdk) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.FlagFilesByCategory == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.FlagFilesByCategory)); err != nil {
   return err
  }
  for val1, val2 := range r.FlagFilesByCategory {
   if err = gobtools.EncodeInt(buf, int(val1)); err != nil {
    return err
   }
   if val2 == nil {
    if err = gobtools.EncodeInt(buf, -1); err != nil {
     return err
    }
   } else {
    if err = gobtools.EncodeInt(buf, len(val2)); err != nil {
     return err
    }
    for val3 := 0; val3 < len(val2); val3++ {
     if err = gobtools.EncodeInterface(ctx, buf, val2[val3]); err != nil {
      return err
     }
    }
   }
  }
 }

 if err = r.HiddenAPIFlagOutput.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r HiddenAPIInfoForSdk) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.HiddenAPIInfoForSdk")
 hasher.WriteInt(2)
 hasher.WriteString(":java.FlagFilesByCategory")
 hasher.WriteString(":.map[hiddenAPIFlagFileCategory]android.Paths")
 hasher.WriteInt(len(r.FlagFilesByCategory))
 val1 := make([]hiddenAPIFlagFileCategory, 0, len(r.FlagFilesByCategory))
 for val3 := range r.FlagFilesByCategory {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":java.hiddenAPIFlagFileCategory")
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(int(val2)))
  hasher.WriteString(":java.android.Paths")
  hasher.WriteString(":.[]Path")
  hasher.WriteInt(len(r.FlagFilesByCategory[val2]))
  for val4 := 0; val4 < len(r.FlagFilesByCategory[val2]); val4++ {
   hasher.WriteString("android/soong/android:android.Path")
   val5 := r.FlagFilesByCategory[val2][val4] == nil
   if val5 {
    hasher.WriteByte(0)
   } else {
    if v := reflect.ValueOf(r.FlagFilesByCategory[val2][val4]); v.Kind() == reflect.Ptr {
     if v.IsNil() {
      panic(fmt.Errorf("nil pointer is not supported in interface"))
     } else {
      val6 := r.FlagFilesByCategory[val2][val4] == nil
      if val6 {
       hasher.WriteByte(0)
      } else {
       val7 := func(hasher *proptools.Hasher) error {
        return r.FlagFilesByCategory[val2][val4].(proptools.CustomHash).CustomHash(hasher)
       }
       if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
        return err
       }
      }
     }
    } else {
     r.FlagFilesByCategory[val2][val4].(proptools.CustomHash).CustomHash(hasher)
    }
   }
  }
 }
 if err := r.HiddenAPIFlagOutput.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *HiddenAPIInfoForSdk) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.FlagFilesByCategory = make(map[hiddenAPIFlagFileCategory]android.Paths, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   var val4 hiddenAPIFlagFileCategory
   var val5 android.Paths
   var val7 int
   err = gobtools.DecodeInt(buf, &val7)
   if err != nil {
    return err
   }
   val4 = hiddenAPIFlagFileCategory(val7)
   var val11 int
   err = gobtools.DecodeInt(buf, &val11)
   if err != nil {
    return err
   }
   if val11 != -1 {
    val5 = make([]android.Path, val11)
    for val12 := 0; val12 < int(val11); val12++ {
     if val14, err := gobtools.DecodeInterface(ctx, buf); err != nil {
      return err
     } else if val14 == nil {
      val5[val12] = nil
     } else {
      val5[val12] = val14.(android.Path)
     }
    }
   }
   r.FlagFilesByCategory[val4] = val5
  }
 }

 if err = r.HiddenAPIFlagOutput.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var HiddenAPIInfoForSdkGobRegId int16

func (r HiddenAPIInfoForSdk) GetTypeId() int16 {
 return HiddenAPIInfoForSdkGobRegId
}

func (r ModuleStubDexJars) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r)); err != nil {
   return err
  }
  for val1, val2 := range r {
   if err = gobtools.EncodeString(buf, val1); err != nil {
    return err
   }
   if err = gobtools.EncodeInterface(ctx, buf, val2); err != nil {
    return err
   }
  }
 }
 return err
}

func (r ModuleStubDexJars) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":.map[string]android.Path")
 hasher.WriteInt(len(r))
 val1 := make([]string, 0, len(r))
 for val3 := range r {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":.string")
  hasher.WriteString(val2)
  hasher.WriteString(":java.android.Path")
  val4 := r[val2] == nil
  if val4 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r[val2]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val5 := r[val2] == nil
     if val5 {
      hasher.WriteByte(0)
     } else {
      val6 := func(hasher *proptools.Hasher) error { return r[val2].(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
       return err
      }
     }
    }
   } else {
    r[val2].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 return nil
}

func (r *ModuleStubDexJars) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val1 int
 err = gobtools.DecodeInt(buf, &val1)
 if err != nil {
  return err
 }
 if val1 != -1 {
  (*r) = make(map[string]android.Path, val1)
  for val2 := 0; val2 < int(val1); val2++ {
   var val3 string
   var val4 android.Path
   err = gobtools.DecodeString(buf, &val3)
   if err != nil {
    return err
   }
   if val7, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val7 == nil {
    val4 = nil
   } else {
    val4 = val7.(android.Path)
   }
   (*r)[val3] = val4
  }
 }

 return err
}

var ModuleStubDexJarsGobRegId int16

func (r ModuleStubDexJars) GetTypeId() int16 {
 return ModuleStubDexJarsGobRegId
}

func (r HiddenAPIPropertyInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.FlagFilesByCategory == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.FlagFilesByCategory)); err != nil {
   return err
  }
  for val1, val2 := range r.FlagFilesByCategory {
   if err = gobtools.EncodeInt(buf, int(val1)); err != nil {
    return err
   }
   if val2 == nil {
    if err = gobtools.EncodeInt(buf, -1); err != nil {
     return err
    }
   } else {
    if err = gobtools.EncodeInt(buf, len(val2)); err != nil {
     return err
    }
    for val3 := 0; val3 < len(val2); val3++ {
     if err = gobtools.EncodeInterface(ctx, buf, val2[val3]); err != nil {
      return err
     }
    }
   }
  }
 }

 if r.PackagePrefixes == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.PackagePrefixes)); err != nil {
   return err
  }
  for val4 := 0; val4 < len(r.PackagePrefixes); val4++ {
   if err = gobtools.EncodeString(buf, r.PackagePrefixes[val4]); err != nil {
    return err
   }
  }
 }

 if r.SinglePackages == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.SinglePackages)); err != nil {
   return err
  }
  for val5 := 0; val5 < len(r.SinglePackages); val5++ {
   if err = gobtools.EncodeString(buf, r.SinglePackages[val5]); err != nil {
    return err
   }
  }
 }

 if r.SplitPackages == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.SplitPackages)); err != nil {
   return err
  }
  for val6 := 0; val6 < len(r.SplitPackages); val6++ {
   if err = gobtools.EncodeString(buf, r.SplitPackages[val6]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r HiddenAPIPropertyInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.HiddenAPIPropertyInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":java.FlagFilesByCategory")
 hasher.WriteString(":.map[hiddenAPIFlagFileCategory]android.Paths")
 hasher.WriteInt(len(r.FlagFilesByCategory))
 val1 := make([]hiddenAPIFlagFileCategory, 0, len(r.FlagFilesByCategory))
 for val3 := range r.FlagFilesByCategory {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":java.hiddenAPIFlagFileCategory")
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(int(val2)))
  hasher.WriteString(":java.android.Paths")
  hasher.WriteString(":.[]Path")
  hasher.WriteInt(len(r.FlagFilesByCategory[val2]))
  for val4 := 0; val4 < len(r.FlagFilesByCategory[val2]); val4++ {
   hasher.WriteString("android/soong/android:android.Path")
   val5 := r.FlagFilesByCategory[val2][val4] == nil
   if val5 {
    hasher.WriteByte(0)
   } else {
    if v := reflect.ValueOf(r.FlagFilesByCategory[val2][val4]); v.Kind() == reflect.Ptr {
     if v.IsNil() {
      panic(fmt.Errorf("nil pointer is not supported in interface"))
     } else {
      val6 := r.FlagFilesByCategory[val2][val4] == nil
      if val6 {
       hasher.WriteByte(0)
      } else {
       val7 := func(hasher *proptools.Hasher) error {
        return r.FlagFilesByCategory[val2][val4].(proptools.CustomHash).CustomHash(hasher)
       }
       if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
        return err
       }
      }
     }
    } else {
     r.FlagFilesByCategory[val2][val4].(proptools.CustomHash).CustomHash(hasher)
    }
   }
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.PackagePrefixes))
 for val8 := 0; val8 < len(r.PackagePrefixes); val8++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.PackagePrefixes[val8])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SinglePackages))
 for val9 := 0; val9 < len(r.SinglePackages); val9++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SinglePackages[val9])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SplitPackages))
 for val10 := 0; val10 < len(r.SplitPackages); val10++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SplitPackages[val10])
 }
 return nil
}

func (r *HiddenAPIPropertyInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.FlagFilesByCategory = make(map[hiddenAPIFlagFileCategory]android.Paths, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   var val4 hiddenAPIFlagFileCategory
   var val5 android.Paths
   var val7 int
   err = gobtools.DecodeInt(buf, &val7)
   if err != nil {
    return err
   }
   val4 = hiddenAPIFlagFileCategory(val7)
   var val11 int
   err = gobtools.DecodeInt(buf, &val11)
   if err != nil {
    return err
   }
   if val11 != -1 {
    val5 = make([]android.Path, val11)
    for val12 := 0; val12 < int(val11); val12++ {
     if val14, err := gobtools.DecodeInterface(ctx, buf); err != nil {
      return err
     } else if val14 == nil {
      val5[val12] = nil
     } else {
      val5[val12] = val14.(android.Path)
     }
    }
   }
   r.FlagFilesByCategory[val4] = val5
  }
 }

 var val16 int
 err = gobtools.DecodeInt(buf, &val16)
 if err != nil {
  return err
 }
 if val16 != -1 {
  r.PackagePrefixes = make([]string, val16)
  for val17 := 0; val17 < int(val16); val17++ {
   err = gobtools.DecodeString(buf, &r.PackagePrefixes[val17])
   if err != nil {
    return err
   }
  }
 }

 var val20 int
 err = gobtools.DecodeInt(buf, &val20)
 if err != nil {
  return err
 }
 if val20 != -1 {
  r.SinglePackages = make([]string, val20)
  for val21 := 0; val21 < int(val20); val21++ {
   err = gobtools.DecodeString(buf, &r.SinglePackages[val21])
   if err != nil {
    return err
   }
  }
 }

 var val24 int
 err = gobtools.DecodeInt(buf, &val24)
 if err != nil {
  return err
 }
 if val24 != -1 {
  r.SplitPackages = make([]string, val24)
  for val25 := 0; val25 < int(val24); val25++ {
   err = gobtools.DecodeString(buf, &r.SplitPackages[val25])
   if err != nil {
    return err
   }
  }
 }

 return err
}

var HiddenAPIPropertyInfoGobRegId int16

func (r HiddenAPIPropertyInfo) GetTypeId() int16 {
 return HiddenAPIPropertyInfoGobRegId
}

func (r HiddenAPIFlagOutput) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.AnnotationFlagsPath); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.MetadataPath); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.IndexPath); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.StubFlagsPath); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.AllFlagsPath); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.SignaturePatternsPath); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.FilteredStubFlagsPath); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.FilteredFlagsPath); err != nil {
  return err
 }
 return err
}

func (r HiddenAPIFlagOutput) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.HiddenAPIFlagOutput")
 hasher.WriteInt(8)
 hasher.WriteString(":java.android.Path")
 val1 := r.AnnotationFlagsPath == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.AnnotationFlagsPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.AnnotationFlagsPath == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.AnnotationFlagsPath.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.AnnotationFlagsPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.MetadataPath == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.MetadataPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.MetadataPath == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error { return r.MetadataPath.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.MetadataPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val7 := r.IndexPath == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.IndexPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val8 := r.IndexPath == nil
    if val8 {
     hasher.WriteByte(0)
    } else {
     val9 := func(hasher *proptools.Hasher) error { return r.IndexPath.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
      return err
     }
    }
   }
  } else {
   r.IndexPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val10 := r.StubFlagsPath == nil
 if val10 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.StubFlagsPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val11 := r.StubFlagsPath == nil
    if val11 {
     hasher.WriteByte(0)
    } else {
     val12 := func(hasher *proptools.Hasher) error { return r.StubFlagsPath.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val12); err != nil {
      return err
     }
    }
   }
  } else {
   r.StubFlagsPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val13 := r.AllFlagsPath == nil
 if val13 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.AllFlagsPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val14 := r.AllFlagsPath == nil
    if val14 {
     hasher.WriteByte(0)
    } else {
     val15 := func(hasher *proptools.Hasher) error { return r.AllFlagsPath.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val15); err != nil {
      return err
     }
    }
   }
  } else {
   r.AllFlagsPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val16 := r.SignaturePatternsPath == nil
 if val16 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.SignaturePatternsPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val17 := r.SignaturePatternsPath == nil
    if val17 {
     hasher.WriteByte(0)
    } else {
     val18 := func(hasher *proptools.Hasher) error {
      return r.SignaturePatternsPath.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val18); err != nil {
      return err
     }
    }
   }
  } else {
   r.SignaturePatternsPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val19 := r.FilteredStubFlagsPath == nil
 if val19 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.FilteredStubFlagsPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val20 := r.FilteredStubFlagsPath == nil
    if val20 {
     hasher.WriteByte(0)
    } else {
     val21 := func(hasher *proptools.Hasher) error {
      return r.FilteredStubFlagsPath.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val21); err != nil {
      return err
     }
    }
   }
  } else {
   r.FilteredStubFlagsPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val22 := r.FilteredFlagsPath == nil
 if val22 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.FilteredFlagsPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val23 := r.FilteredFlagsPath == nil
    if val23 {
     hasher.WriteByte(0)
    } else {
     val24 := func(hasher *proptools.Hasher) error {
      return r.FilteredFlagsPath.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val24); err != nil {
      return err
     }
    }
   }
  } else {
   r.FilteredFlagsPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *HiddenAPIFlagOutput) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.AnnotationFlagsPath = nil
 } else {
  r.AnnotationFlagsPath = val2.(android.Path)
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.MetadataPath = nil
 } else {
  r.MetadataPath = val4.(android.Path)
 }

 if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val6 == nil {
  r.IndexPath = nil
 } else {
  r.IndexPath = val6.(android.Path)
 }

 if val8, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val8 == nil {
  r.StubFlagsPath = nil
 } else {
  r.StubFlagsPath = val8.(android.Path)
 }

 if val10, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val10 == nil {
  r.AllFlagsPath = nil
 } else {
  r.AllFlagsPath = val10.(android.Path)
 }

 if val12, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val12 == nil {
  r.SignaturePatternsPath = nil
 } else {
  r.SignaturePatternsPath = val12.(android.Path)
 }

 if val14, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val14 == nil {
  r.FilteredStubFlagsPath = nil
 } else {
  r.FilteredStubFlagsPath = val14.(android.Path)
 }

 if val16, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val16 == nil {
  r.FilteredFlagsPath = nil
 } else {
  r.FilteredFlagsPath = val16.(android.Path)
 }

 return err
}

var HiddenAPIFlagOutputGobRegId int16

func (r HiddenAPIFlagOutput) GetTypeId() int16 {
 return HiddenAPIFlagOutputGobRegId
}

func (r SignatureCsvSubset) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.CsvFile); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.SignaturePatternsFile); err != nil {
  return err
 }
 return err
}

func (r SignatureCsvSubset) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.SignatureCsvSubset")
 hasher.WriteInt(2)
 hasher.WriteString(":java.android.Path")
 val1 := r.CsvFile == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.CsvFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.CsvFile == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.CsvFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.CsvFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.SignaturePatternsFile == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.SignaturePatternsFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.SignaturePatternsFile == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error {
      return r.SignaturePatternsFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.SignaturePatternsFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *SignatureCsvSubset) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.CsvFile = nil
 } else {
  r.CsvFile = val2.(android.Path)
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.SignaturePatternsFile = nil
 } else {
  r.SignaturePatternsFile = val4.(android.Path)
 }

 return err
}

var SignatureCsvSubsetGobRegId int16

func (r SignatureCsvSubset) GetTypeId() int16 {
 return SignatureCsvSubsetGobRegId
}

func (r SignatureCsvSubsets) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r); val1++ {
   if err = r[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }
 return err
}

func (r SignatureCsvSubsets) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":.[]SignatureCsvSubset")
 hasher.WriteInt(len(r))
 for val1 := 0; val1 < len(r); val1++ {
  if err := r[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *SignatureCsvSubsets) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  (*r) = make([]SignatureCsvSubset, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   if err = (*r)[val3].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 return err
}

var SignatureCsvSubsetsGobRegId int16

func (r SignatureCsvSubsets) GetTypeId() int16 {
 return SignatureCsvSubsetsGobRegId
}

// end of hiddenapi_modular.go

// begin of hiddenapi_monolithic.go
func init() {
 MonolithicHiddenAPIInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(MonolithicHiddenAPIInfo) })
}

func (r MonolithicHiddenAPIInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.FlagsFilesByCategory == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.FlagsFilesByCategory)); err != nil {
   return err
  }
  for val1, val2 := range r.FlagsFilesByCategory {
   if err = gobtools.EncodeInt(buf, int(val1)); err != nil {
    return err
   }
   if val2 == nil {
    if err = gobtools.EncodeInt(buf, -1); err != nil {
     return err
    }
   } else {
    if err = gobtools.EncodeInt(buf, len(val2)); err != nil {
     return err
    }
    for val3 := 0; val3 < len(val2); val3++ {
     if err = gobtools.EncodeInterface(ctx, buf, val2[val3]); err != nil {
      return err
     }
    }
   }
  }
 }

 if r.AnnotationFlagsPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.AnnotationFlagsPaths)); err != nil {
   return err
  }
  for val4 := 0; val4 < len(r.AnnotationFlagsPaths); val4++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.AnnotationFlagsPaths[val4]); err != nil {
    return err
   }
  }
 }

 if r.MetadataPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.MetadataPaths)); err != nil {
   return err
  }
  for val5 := 0; val5 < len(r.MetadataPaths); val5++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.MetadataPaths[val5]); err != nil {
    return err
   }
  }
 }

 if r.IndexPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.IndexPaths)); err != nil {
   return err
  }
  for val6 := 0; val6 < len(r.IndexPaths); val6++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.IndexPaths[val6]); err != nil {
    return err
   }
  }
 }

 if r.StubFlagSubsets == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.StubFlagSubsets)); err != nil {
   return err
  }
  for val7 := 0; val7 < len(r.StubFlagSubsets); val7++ {
   if err = r.StubFlagSubsets[val7].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if r.FlagSubsets == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.FlagSubsets)); err != nil {
   return err
  }
  for val8 := 0; val8 < len(r.FlagSubsets); val8++ {
   if err = r.FlagSubsets[val8].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if r.ClassesJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ClassesJars)); err != nil {
   return err
  }
  for val9 := 0; val9 < len(r.ClassesJars); val9++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.ClassesJars[val9]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r MonolithicHiddenAPIInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.MonolithicHiddenAPIInfo")
 hasher.WriteInt(7)
 hasher.WriteString(":java.FlagFilesByCategory")
 hasher.WriteString(":.map[hiddenAPIFlagFileCategory]android.Paths")
 hasher.WriteInt(len(r.FlagsFilesByCategory))
 val1 := make([]hiddenAPIFlagFileCategory, 0, len(r.FlagsFilesByCategory))
 for val3 := range r.FlagsFilesByCategory {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":java.hiddenAPIFlagFileCategory")
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(int(val2)))
  hasher.WriteString(":java.android.Paths")
  hasher.WriteString(":.[]Path")
  hasher.WriteInt(len(r.FlagsFilesByCategory[val2]))
  for val4 := 0; val4 < len(r.FlagsFilesByCategory[val2]); val4++ {
   hasher.WriteString("android/soong/android:android.Path")
   val5 := r.FlagsFilesByCategory[val2][val4] == nil
   if val5 {
    hasher.WriteByte(0)
   } else {
    if v := reflect.ValueOf(r.FlagsFilesByCategory[val2][val4]); v.Kind() == reflect.Ptr {
     if v.IsNil() {
      panic(fmt.Errorf("nil pointer is not supported in interface"))
     } else {
      val6 := r.FlagsFilesByCategory[val2][val4] == nil
      if val6 {
       hasher.WriteByte(0)
      } else {
       val7 := func(hasher *proptools.Hasher) error {
        return r.FlagsFilesByCategory[val2][val4].(proptools.CustomHash).CustomHash(hasher)
       }
       if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
        return err
       }
      }
     }
    } else {
     r.FlagsFilesByCategory[val2][val4].(proptools.CustomHash).CustomHash(hasher)
    }
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.AnnotationFlagsPaths))
 for val8 := 0; val8 < len(r.AnnotationFlagsPaths); val8++ {
  hasher.WriteString("android/soong/android:android.Path")
  val9 := r.AnnotationFlagsPaths[val8] == nil
  if val9 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.AnnotationFlagsPaths[val8]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val10 := r.AnnotationFlagsPaths[val8] == nil
     if val10 {
      hasher.WriteByte(0)
     } else {
      val11 := func(hasher *proptools.Hasher) error {
       return r.AnnotationFlagsPaths[val8].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val11); err != nil {
       return err
      }
     }
    }
   } else {
    r.AnnotationFlagsPaths[val8].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.MetadataPaths))
 for val12 := 0; val12 < len(r.MetadataPaths); val12++ {
  hasher.WriteString("android/soong/android:android.Path")
  val13 := r.MetadataPaths[val12] == nil
  if val13 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.MetadataPaths[val12]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val14 := r.MetadataPaths[val12] == nil
     if val14 {
      hasher.WriteByte(0)
     } else {
      val15 := func(hasher *proptools.Hasher) error {
       return r.MetadataPaths[val12].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val15); err != nil {
       return err
      }
     }
    }
   } else {
    r.MetadataPaths[val12].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.IndexPaths))
 for val16 := 0; val16 < len(r.IndexPaths); val16++ {
  hasher.WriteString("android/soong/android:android.Path")
  val17 := r.IndexPaths[val16] == nil
  if val17 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.IndexPaths[val16]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val18 := r.IndexPaths[val16] == nil
     if val18 {
      hasher.WriteByte(0)
     } else {
      val19 := func(hasher *proptools.Hasher) error {
       return r.IndexPaths[val16].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val19); err != nil {
       return err
      }
     }
    }
   } else {
    r.IndexPaths[val16].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.SignatureCsvSubsets")
 hasher.WriteString(":.[]SignatureCsvSubset")
 hasher.WriteInt(len(r.StubFlagSubsets))
 for val20 := 0; val20 < len(r.StubFlagSubsets); val20++ {
  if err := r.StubFlagSubsets[val20].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":java.SignatureCsvSubsets")
 hasher.WriteString(":.[]SignatureCsvSubset")
 hasher.WriteInt(len(r.FlagSubsets))
 for val21 := 0; val21 < len(r.FlagSubsets); val21++ {
  if err := r.FlagSubsets[val21].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.ClassesJars))
 for val22 := 0; val22 < len(r.ClassesJars); val22++ {
  hasher.WriteString("android/soong/android:android.Path")
  val23 := r.ClassesJars[val22] == nil
  if val23 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ClassesJars[val22]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val24 := r.ClassesJars[val22] == nil
     if val24 {
      hasher.WriteByte(0)
     } else {
      val25 := func(hasher *proptools.Hasher) error {
       return r.ClassesJars[val22].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val25); err != nil {
       return err
      }
     }
    }
   } else {
    r.ClassesJars[val22].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 return nil
}

func (r *MonolithicHiddenAPIInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.FlagsFilesByCategory = make(map[hiddenAPIFlagFileCategory]android.Paths, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   var val4 hiddenAPIFlagFileCategory
   var val5 android.Paths
   var val7 int
   err = gobtools.DecodeInt(buf, &val7)
   if err != nil {
    return err
   }
   val4 = hiddenAPIFlagFileCategory(val7)
   var val11 int
   err = gobtools.DecodeInt(buf, &val11)
   if err != nil {
    return err
   }
   if val11 != -1 {
    val5 = make([]android.Path, val11)
    for val12 := 0; val12 < int(val11); val12++ {
     if val14, err := gobtools.DecodeInterface(ctx, buf); err != nil {
      return err
     } else if val14 == nil {
      val5[val12] = nil
     } else {
      val5[val12] = val14.(android.Path)
     }
    }
   }
   r.FlagsFilesByCategory[val4] = val5
  }
 }

 var val17 int
 err = gobtools.DecodeInt(buf, &val17)
 if err != nil {
  return err
 }
 if val17 != -1 {
  r.AnnotationFlagsPaths = make([]android.Path, val17)
  for val18 := 0; val18 < int(val17); val18++ {
   if val20, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val20 == nil {
    r.AnnotationFlagsPaths[val18] = nil
   } else {
    r.AnnotationFlagsPaths[val18] = val20.(android.Path)
   }
  }
 }

 var val23 int
 err = gobtools.DecodeInt(buf, &val23)
 if err != nil {
  return err
 }
 if val23 != -1 {
  r.MetadataPaths = make([]android.Path, val23)
  for val24 := 0; val24 < int(val23); val24++ {
   if val26, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val26 == nil {
    r.MetadataPaths[val24] = nil
   } else {
    r.MetadataPaths[val24] = val26.(android.Path)
   }
  }
 }

 var val29 int
 err = gobtools.DecodeInt(buf, &val29)
 if err != nil {
  return err
 }
 if val29 != -1 {
  r.IndexPaths = make([]android.Path, val29)
  for val30 := 0; val30 < int(val29); val30++ {
   if val32, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val32 == nil {
    r.IndexPaths[val30] = nil
   } else {
    r.IndexPaths[val30] = val32.(android.Path)
   }
  }
 }

 var val35 int
 err = gobtools.DecodeInt(buf, &val35)
 if err != nil {
  return err
 }
 if val35 != -1 {
  r.StubFlagSubsets = make([]SignatureCsvSubset, val35)
  for val36 := 0; val36 < int(val35); val36++ {
   if err = r.StubFlagSubsets[val36].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 var val40 int
 err = gobtools.DecodeInt(buf, &val40)
 if err != nil {
  return err
 }
 if val40 != -1 {
  r.FlagSubsets = make([]SignatureCsvSubset, val40)
  for val41 := 0; val41 < int(val40); val41++ {
   if err = r.FlagSubsets[val41].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 var val45 int
 err = gobtools.DecodeInt(buf, &val45)
 if err != nil {
  return err
 }
 if val45 != -1 {
  r.ClassesJars = make([]android.Path, val45)
  for val46 := 0; val46 < int(val45); val46++ {
   if val48, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val48 == nil {
    r.ClassesJars[val46] = nil
   } else {
    r.ClassesJars[val46] = val48.(android.Path)
   }
  }
 }

 return err
}

var MonolithicHiddenAPIInfoGobRegId int16

func (r MonolithicHiddenAPIInfo) GetTypeId() int16 {
 return MonolithicHiddenAPIInfoGobRegId
}

// end of hiddenapi_monolithic.go

// begin of jacoco.go
func init() {
 JacocoInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JacocoInfo) })
 JacocoInfosGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JacocoInfos) })
}

func (r JacocoInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.ReportClassesFile); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.Class); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.ModuleName); err != nil {
  return err
 }
 return err
}

func (r JacocoInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JacocoInfo")
 hasher.WriteInt(3)
 hasher.WriteString(":java.android.Path")
 val1 := r.ReportClassesFile == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ReportClassesFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.ReportClassesFile == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.ReportClassesFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.ReportClassesFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.Class)
 hasher.WriteString(":.string")
 hasher.WriteString(r.ModuleName)
 return nil
}

func (r *JacocoInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.ReportClassesFile = nil
 } else {
  r.ReportClassesFile = val2.(android.Path)
 }

 err = gobtools.DecodeString(buf, &r.Class)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.ModuleName)
 if err != nil {
  return err
 }

 return err
}

var JacocoInfoGobRegId int16

func (r JacocoInfo) GetTypeId() int16 {
 return JacocoInfoGobRegId
}

func (r JacocoInfos) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r); val1++ {
   if err = r[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }
 return err
}

func (r JacocoInfos) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":.[]JacocoInfo")
 hasher.WriteInt(len(r))
 for val1 := 0; val1 < len(r); val1++ {
  if err := r[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *JacocoInfos) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  (*r) = make([]JacocoInfo, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   if err = (*r)[val3].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 return err
}

var JacocoInfosGobRegId int16

func (r JacocoInfos) GetTypeId() int16 {
 return JacocoInfosGobRegId
}

// end of jacoco.go

// begin of java.go
func init() {
 ProguardSpecInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ProguardSpecInfo) })
 AndroidLibraryDependencyInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AndroidLibraryDependencyInfo) })
 UsesLibraryDependencyInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(UsesLibraryDependencyInfo) })
 ProvidesUsesLibInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ProvidesUsesLibInfo) })
 ModuleWithSdkDepInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ModuleWithSdkDepInfo) })
 ApexDependencyInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ApexDependencyInfo) })
 JavaInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaInfo) })
 DexpreopterInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(DexpreopterInfo) })
 JavaLibraryInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaLibraryInfo) })
 JavaDexImportInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaDexImportInfo) })
 SyspropPublicStubInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SyspropPublicStubInfo) })
 jniLibGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(jniLib) })
 JavaTestInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaTestInfo) })
 JavaApiImportInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaApiImportInfo) })
 JavaImportDepInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaImportDepInSameApexChecker) })
}

func (r ProguardSpecInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeBool(buf, r.Export_proguard_flags_files); err != nil {
  return err
 }

 if err = r.ProguardFlagsFiles.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.IncludedProguardFlagsFiles.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.UnconditionallyExportedProguardFlags.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.IncludedUnconditionallyExportedProguardFlags.EncodeInterface(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r ProguardSpecInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ProguardSpecInfo")
 hasher.WriteInt(5)
 hasher.WriteString(":.bool")
 if r.Export_proguard_flags_files {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 val5 := func(hasher *proptools.Hasher, val1 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val2 := val1 == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val1); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := val1 == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error { return val1.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    val1.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.ProguardFlagsFiles.Hash(hasher, "android.Path", val5); err != nil {
  return err
 }
 val10 := func(hasher *proptools.Hasher, val6 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val7 := val6 == nil
  if val7 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val6); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val8 := val6 == nil
     if val8 {
      hasher.WriteByte(0)
     } else {
      val9 := func(hasher *proptools.Hasher) error { return val6.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
       return err
      }
     }
    }
   } else {
    val6.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.IncludedProguardFlagsFiles.Hash(hasher, "android.Path", val10); err != nil {
  return err
 }
 val15 := func(hasher *proptools.Hasher, val11 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val12 := val11 == nil
  if val12 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val11); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val13 := val11 == nil
     if val13 {
      hasher.WriteByte(0)
     } else {
      val14 := func(hasher *proptools.Hasher) error { return val11.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val14); err != nil {
       return err
      }
     }
    }
   } else {
    val11.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.UnconditionallyExportedProguardFlags.Hash(hasher, "android.Path", val15); err != nil {
  return err
 }
 val20 := func(hasher *proptools.Hasher, val16 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val17 := val16 == nil
  if val17 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val16); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val18 := val16 == nil
     if val18 {
      hasher.WriteByte(0)
     } else {
      val19 := func(hasher *proptools.Hasher) error { return val16.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val19); err != nil {
       return err
      }
     }
    }
   } else {
    val16.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.IncludedUnconditionallyExportedProguardFlags.Hash(hasher, "android.Path", val20); err != nil {
  return err
 }
 return nil
}

func (r *ProguardSpecInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeBool(buf, &r.Export_proguard_flags_files)
 if err != nil {
  return err
 }

 if err = r.ProguardFlagsFiles.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.IncludedProguardFlagsFiles.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.UnconditionallyExportedProguardFlags.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.IncludedUnconditionallyExportedProguardFlags.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 return err
}

var ProguardSpecInfoGobRegId int16

func (r ProguardSpecInfo) GetTypeId() int16 {
 return ProguardSpecInfoGobRegId
}

func (r AndroidLibraryDependencyInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.ExportPackage); err != nil {
  return err
 }

 if err = r.ResourcesNodeDepSet.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.RRODirsDepSet.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.ManifestsDepSet.EncodeInterface(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r AndroidLibraryDependencyInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.AndroidLibraryDependencyInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":java.android.Path")
 val1 := r.ExportPackage == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ExportPackage); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.ExportPackage == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.ExportPackage.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.ExportPackage.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 val5 := func(hasher *proptools.Hasher, val4 resourcesNode) error {
  if err := val4.CustomHash(hasher); err != nil {
   return err
  }
  return nil
 }
 if err := r.ResourcesNodeDepSet.Hash(hasher, "resourcesNode", val5); err != nil {
  return err
 }
 val7 := func(hasher *proptools.Hasher, val6 rroDir) error {
  if err := val6.CustomHash(hasher); err != nil {
   return err
  }
  return nil
 }
 if err := r.RRODirsDepSet.Hash(hasher, "rroDir", val7); err != nil {
  return err
 }
 val12 := func(hasher *proptools.Hasher, val8 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val9 := val8 == nil
  if val9 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val8); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val10 := val8 == nil
     if val10 {
      hasher.WriteByte(0)
     } else {
      val11 := func(hasher *proptools.Hasher) error { return val8.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val11); err != nil {
       return err
      }
     }
    }
   } else {
    val8.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.ManifestsDepSet.Hash(hasher, "android.Path", val12); err != nil {
  return err
 }
 return nil
}

func (r *AndroidLibraryDependencyInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.ExportPackage = nil
 } else {
  r.ExportPackage = val2.(android.Path)
 }

 if err = r.ResourcesNodeDepSet.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.RRODirsDepSet.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.ManifestsDepSet.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 return err
}

var AndroidLibraryDependencyInfoGobRegId int16

func (r AndroidLibraryDependencyInfo) GetTypeId() int16 {
 return AndroidLibraryDependencyInfoGobRegId
}

func (r UsesLibraryDependencyInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.DexJarInstallPath); err != nil {
  return err
 }

 if r.ClassLoaderContexts == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ClassLoaderContexts)); err != nil {
   return err
  }
  for val1, val2 := range r.ClassLoaderContexts {
   if err = gobtools.EncodeInt(buf, val1); err != nil {
    return err
   }
   if val2 == nil {
    if err = gobtools.EncodeInt(buf, -1); err != nil {
     return err
    }
   } else {
    if err = gobtools.EncodeInt(buf, len(val2)); err != nil {
     return err
    }
    for val3 := 0; val3 < len(val2); val3++ {
     val4 := val2[val3] == nil
     if err = gobtools.EncodeBool(buf, val4); err != nil {
      return err
     }
     if !val4 {
      if err = (*val2[val3]).Encode(ctx, buf); err != nil {
       return err
      }
     }
    }
   }
  }
 }
 return err
}

func (r UsesLibraryDependencyInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.UsesLibraryDependencyInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":java.android.Path")
 val1 := r.DexJarInstallPath == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.DexJarInstallPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.DexJarInstallPath == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.DexJarInstallPath.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.DexJarInstallPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.dexpreopt.ClassLoaderContextMap")
 hasher.WriteString(":.map[int][]*ClassLoaderContext")
 hasher.WriteInt(len(r.ClassLoaderContexts))
 val4 := make([]int, 0, len(r.ClassLoaderContexts))
 for val6 := range r.ClassLoaderContexts {
  val4 = append(val4, val6)
 }
 proptools.SortOrdered(val4)
 for _, val5 := range val4 {
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(val5))
  hasher.WriteString(":.[]*ClassLoaderContext")
  hasher.WriteInt(len(r.ClassLoaderContexts[val5]))
  for val7 := 0; val7 < len(r.ClassLoaderContexts[val5]); val7++ {
   hasher.WriteString(":.*ClassLoaderContext")
   val8 := r.ClassLoaderContexts[val5][val7] == nil
   if val8 {
    hasher.WriteByte(0)
   } else {
    val9 := func(hasher *proptools.Hasher) error {
     if err := (*r.ClassLoaderContexts[val5][val7]).CustomHash(hasher); err != nil {
      return err
     }
     return nil
    }
    if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ClassLoaderContexts[val5][val7])), val9); err != nil {
     return err
    }
   }
  }
 }
 return nil
}

func (r *UsesLibraryDependencyInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.DexJarInstallPath = nil
 } else {
  r.DexJarInstallPath = val2.(android.Path)
 }

 var val4 int
 err = gobtools.DecodeInt(buf, &val4)
 if err != nil {
  return err
 }
 if val4 != -1 {
  r.ClassLoaderContexts = make(map[int][]*dexpreopt.ClassLoaderContext, val4)
  for val5 := 0; val5 < int(val4); val5++ {
   var val6 int
   var val7 []*dexpreopt.ClassLoaderContext
   err = gobtools.DecodeInt(buf, &val6)
   if err != nil {
    return err
   }
   var val10 int
   err = gobtools.DecodeInt(buf, &val10)
   if err != nil {
    return err
   }
   if val10 != -1 {
    val7 = make([]*dexpreopt.ClassLoaderContext, val10)
    for val11 := 0; val11 < int(val10); val11++ {
     var val13 bool
     if err = gobtools.DecodeBool(buf, &val13); err != nil {
      return err
     }
     if !val13 {
      var val12 dexpreopt.ClassLoaderContext
      if err = val12.Decode(ctx, buf); err != nil {
       return err
      }
      val7[val11] = &val12
     }
    }
   }
   r.ClassLoaderContexts[val6] = val7
  }
 }

 return err
}

var UsesLibraryDependencyInfoGobRegId int16

func (r UsesLibraryDependencyInfo) GetTypeId() int16 {
 return UsesLibraryDependencyInfoGobRegId
}

func (r ProvidesUsesLibInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 val1 := r.ProvidesUsesLib == nil
 if err = gobtools.EncodeBool(buf, val1); err != nil {
  return err
 }
 if !val1 {
  if err = gobtools.EncodeString(buf, (*r.ProvidesUsesLib)); err != nil {
   return err
  }
 }
 return err
}

func (r ProvidesUsesLibInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ProvidesUsesLibInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.*string")
 val1 := r.ProvidesUsesLib == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  val2 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.ProvidesUsesLib))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ProvidesUsesLib)), val2); err != nil {
   return err
  }
 }
 return nil
}

func (r *ProvidesUsesLibInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 bool
 if err = gobtools.DecodeBool(buf, &val2); err != nil {
  return err
 }
 if !val2 {
  var val1 string
  err = gobtools.DecodeString(buf, &val1)
  if err != nil {
   return err
  }
  r.ProvidesUsesLib = &val1
 }

 return err
}

var ProvidesUsesLibInfoGobRegId int16

func (r ProvidesUsesLibInfo) GetTypeId() int16 {
 return ProvidesUsesLibInfoGobRegId
}

func (r ModuleWithSdkDepInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInt(buf, int(r.SdkLinkType)); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.Stubs); err != nil {
  return err
 }
 return err
}

func (r ModuleWithSdkDepInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ModuleWithSdkDepInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":java.sdkLinkType")
 hasher.WriteString(":.int")
 hasher.WriteUint64(uint64(int(r.SdkLinkType)))
 hasher.WriteString(":.bool")
 if r.Stubs {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *ModuleWithSdkDepInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 r.SdkLinkType = sdkLinkType(val2)

 err = gobtools.DecodeBool(buf, &r.Stubs)
 if err != nil {
  return err
 }

 return err
}

var ModuleWithSdkDepInfoGobRegId int16

func (r ModuleWithSdkDepInfo) GetTypeId() int16 {
 return ModuleWithSdkDepInfoGobRegId
}

func (r ApexDependencyInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.HeaderJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.HeaderJars)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.HeaderJars); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.HeaderJars[val1]); err != nil {
    return err
   }
  }
 }

 if r.ImplementationAndResourcesJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ImplementationAndResourcesJars)); err != nil {
   return err
  }
  for val2 := 0; val2 < len(r.ImplementationAndResourcesJars); val2++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.ImplementationAndResourcesJars[val2]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r ApexDependencyInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ApexDependencyInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.HeaderJars))
 for val1 := 0; val1 < len(r.HeaderJars); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.HeaderJars[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.HeaderJars[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.HeaderJars[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.HeaderJars[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.HeaderJars[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.ImplementationAndResourcesJars))
 for val5 := 0; val5 < len(r.ImplementationAndResourcesJars); val5++ {
  hasher.WriteString("android/soong/android:android.Path")
  val6 := r.ImplementationAndResourcesJars[val5] == nil
  if val6 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ImplementationAndResourcesJars[val5]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val7 := r.ImplementationAndResourcesJars[val5] == nil
     if val7 {
      hasher.WriteByte(0)
     } else {
      val8 := func(hasher *proptools.Hasher) error {
       return r.ImplementationAndResourcesJars[val5].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val8); err != nil {
       return err
      }
     }
    }
   } else {
    r.ImplementationAndResourcesJars[val5].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 return nil
}

func (r *ApexDependencyInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.HeaderJars = make([]android.Path, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val6 == nil {
    r.HeaderJars[val4] = nil
   } else {
    r.HeaderJars[val4] = val6.(android.Path)
   }
  }
 }

 var val9 int
 err = gobtools.DecodeInt(buf, &val9)
 if err != nil {
  return err
 }
 if val9 != -1 {
  r.ImplementationAndResourcesJars = make([]android.Path, val9)
  for val10 := 0; val10 < int(val9); val10++ {
   if val12, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val12 == nil {
    r.ImplementationAndResourcesJars[val10] = nil
   } else {
    r.ImplementationAndResourcesJars[val10] = val12.(android.Path)
   }
  }
 }

 return err
}

var ApexDependencyInfoGobRegId int16

func (r ApexDependencyInfo) GetTypeId() int16 {
 return ApexDependencyInfoGobRegId
}

func (r JavaInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.HeaderJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.HeaderJars)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.HeaderJars); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.HeaderJars[val1]); err != nil {
    return err
   }
  }
 }

 if r.RepackagedHeaderJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.RepackagedHeaderJars)); err != nil {
   return err
  }
  for val2 := 0; val2 < len(r.RepackagedHeaderJars); val2++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.RepackagedHeaderJars[val2]); err != nil {
    return err
   }
  }
 }

 if r.LocalHeaderJarsPreJarjar == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.LocalHeaderJarsPreJarjar)); err != nil {
   return err
  }
  for val3 := 0; val3 < len(r.LocalHeaderJarsPreJarjar); val3++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.LocalHeaderJarsPreJarjar[val3]); err != nil {
    return err
   }
  }
 }

 if err = r.TransitiveLibsHeaderJarsForR8.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveStaticLibsHeaderJarsForR8.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveStaticLibsHeaderJars.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveStaticLibsImplementationJars.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveStaticLibsResourceJars.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if r.ImplementationAndResourcesJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ImplementationAndResourcesJars)); err != nil {
   return err
  }
  for val4 := 0; val4 < len(r.ImplementationAndResourcesJars); val4++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.ImplementationAndResourcesJars[val4]); err != nil {
    return err
   }
  }
 }

 if r.ImplementationJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ImplementationJars)); err != nil {
   return err
  }
  for val5 := 0; val5 < len(r.ImplementationJars); val5++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.ImplementationJars[val5]); err != nil {
    return err
   }
  }
 }

 if r.ResourceJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ResourceJars)); err != nil {
   return err
  }
  for val6 := 0; val6 < len(r.ResourceJars); val6++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.ResourceJars[val6]); err != nil {
    return err
   }
  }
 }

 if r.LocalHeaderJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.LocalHeaderJars)); err != nil {
   return err
  }
  for val7 := 0; val7 < len(r.LocalHeaderJars); val7++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.LocalHeaderJars[val7]); err != nil {
    return err
   }
  }
 }

 if r.KotlinHeaderJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.KotlinHeaderJars)); err != nil {
   return err
  }
  for val8 := 0; val8 < len(r.KotlinHeaderJars); val8++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.KotlinHeaderJars[val8]); err != nil {
    return err
   }
  }
 }

 if r.AidlIncludeDirs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.AidlIncludeDirs)); err != nil {
   return err
  }
  for val9 := 0; val9 < len(r.AidlIncludeDirs); val9++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.AidlIncludeDirs[val9]); err != nil {
    return err
   }
  }
 }

 if r.SrcJarArgs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.SrcJarArgs)); err != nil {
   return err
  }
  for val10 := 0; val10 < len(r.SrcJarArgs); val10++ {
   if err = gobtools.EncodeString(buf, r.SrcJarArgs[val10]); err != nil {
    return err
   }
  }
 }

 if r.SrcJarDeps == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.SrcJarDeps)); err != nil {
   return err
  }
  for val11 := 0; val11 < len(r.SrcJarDeps); val11++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.SrcJarDeps[val11]); err != nil {
    return err
   }
  }
 }

 if r.KSnapshotFiles == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.KSnapshotFiles)); err != nil {
   return err
  }
  for val12, val13 := range r.KSnapshotFiles {
   if err = gobtools.EncodeString(buf, val12); err != nil {
    return err
   }
   if err = gobtools.EncodeInterface(ctx, buf, val13); err != nil {
    return err
   }
  }
 }

 if err = r.TransitiveSrcFiles.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if r.ExportedPlugins == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ExportedPlugins)); err != nil {
   return err
  }
  for val14 := 0; val14 < len(r.ExportedPlugins); val14++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.ExportedPlugins[val14]); err != nil {
    return err
   }
  }
 }

 if r.ExportedPluginClasses == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ExportedPluginClasses)); err != nil {
   return err
  }
  for val15 := 0; val15 < len(r.ExportedPluginClasses); val15++ {
   if err = gobtools.EncodeString(buf, r.ExportedPluginClasses[val15]); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeBool(buf, r.ExportedPluginDisableTurbine); err != nil {
  return err
 }

 if err = r.JacocoInfo.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeInt(buf, int(r.StubsLinkType)); err != nil {
  return err
 }

 if r.AconfigIntermediateCacheOutputPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.AconfigIntermediateCacheOutputPaths)); err != nil {
   return err
  }
  for val16 := 0; val16 < len(r.AconfigIntermediateCacheOutputPaths); val16++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.AconfigIntermediateCacheOutputPaths[val16]); err != nil {
    return err
   }
  }
 }

 if err = r.SdkVersion.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.OutputFile); err != nil {
  return err
 }

 if r.ExtraOutputFiles == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ExtraOutputFiles)); err != nil {
   return err
  }
  for val17 := 0; val17 < len(r.ExtraOutputFiles); val17++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.ExtraOutputFiles[val17]); err != nil {
    return err
   }
  }
 }

 val18 := r.AndroidLibraryDependencyInfo == nil
 if err = gobtools.EncodeBool(buf, val18); err != nil {
  return err
 }
 if !val18 {
  if err = (*r.AndroidLibraryDependencyInfo).Encode(ctx, buf); err != nil {
   return err
  }
 }

 val19 := r.UsesLibraryDependencyInfo == nil
 if err = gobtools.EncodeBool(buf, val19); err != nil {
  return err
 }
 if !val19 {
  if err = (*r.UsesLibraryDependencyInfo).Encode(ctx, buf); err != nil {
   return err
  }
 }

 val20 := r.ProvidesUsesLibInfo == nil
 if err = gobtools.EncodeBool(buf, val20); err != nil {
  return err
 }
 if !val20 {
  if err = (*r.ProvidesUsesLibInfo).Encode(ctx, buf); err != nil {
   return err
  }
 }

 if r.MissingOptionalUsesLibs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.MissingOptionalUsesLibs)); err != nil {
   return err
  }
  for val21 := 0; val21 < len(r.MissingOptionalUsesLibs); val21++ {
   if err = gobtools.EncodeString(buf, r.MissingOptionalUsesLibs[val21]); err != nil {
    return err
   }
  }
 }

 val22 := r.ModuleWithSdkDepInfo == nil
 if err = gobtools.EncodeBool(buf, val22); err != nil {
  return err
 }
 if !val22 {
  if err = (*r.ModuleWithSdkDepInfo).Encode(ctx, buf); err != nil {
   return err
  }
 }

 if err = r.DexJarFile.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.InstallFile); err != nil {
  return err
 }

 if err = r.BootDexJarPath.Encode(ctx, buf); err != nil {
  return err
 }

 if r.HiddenapiClassesJarPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.HiddenapiClassesJarPaths)); err != nil {
   return err
  }
  for val23 := 0; val23 < len(r.HiddenapiClassesJarPaths); val23++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.HiddenapiClassesJarPaths[val23]); err != nil {
    return err
   }
  }
 }

 val24 := r.UncompressDexState == nil
 if err = gobtools.EncodeBool(buf, val24); err != nil {
  return err
 }
 if !val24 {
  if err = gobtools.EncodeBool(buf, (*r.UncompressDexState)); err != nil {
   return err
  }
 }

 if err = gobtools.EncodeBool(buf, r.Active); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.BuiltInstalled); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ConfigPath); err != nil {
  return err
 }

 if r.LogtagsSrcs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.LogtagsSrcs)); err != nil {
   return err
  }
  for val25 := 0; val25 < len(r.LogtagsSrcs); val25++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.LogtagsSrcs[val25]); err != nil {
    return err
   }
  }
 }

 if err = r.ProguardDictionary.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.ProguardUsageZip.Encode(ctx, buf); err != nil {
  return err
 }

 if r.LinterReports == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.LinterReports)); err != nil {
   return err
  }
  for val26 := 0; val26 < len(r.LinterReports); val26++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.LinterReports[val26]); err != nil {
    return err
   }
  }
 }

 if err = r.HostdexInstallFile.Encode(ctx, buf); err != nil {
  return err
 }

 if r.GeneratedSrcjars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.GeneratedSrcjars)); err != nil {
   return err
  }
  for val27 := 0; val27 < len(r.GeneratedSrcjars); val27++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.GeneratedSrcjars[val27]); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeBool(buf, r.ProfileGuided); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.Stem); err != nil {
  return err
 }

 if err = r.DexJarBuildPath.Encode(ctx, buf); err != nil {
  return err
 }

 val28 := r.DexpreopterInfo == nil
 if err = gobtools.EncodeBool(buf, val28); err != nil {
  return err
 }
 if !val28 {
  if err = (*r.DexpreopterInfo).Encode(ctx, buf); err != nil {
   return err
  }
 }

 if r.XrefJavaFiles == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.XrefJavaFiles)); err != nil {
   return err
  }
  for val29 := 0; val29 < len(r.XrefJavaFiles); val29++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.XrefJavaFiles[val29]); err != nil {
    return err
   }
  }
 }

 if r.XrefKotlinFiles == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.XrefKotlinFiles)); err != nil {
   return err
  }
  for val30 := 0; val30 < len(r.XrefKotlinFiles); val30++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.XrefKotlinFiles[val30]); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeBool(buf, r.HasOverrideMinSdkVersion); err != nil {
  return err
 }

 val31 := r.CompileDex == nil
 if err = gobtools.EncodeBool(buf, val31); err != nil {
  return err
 }
 if !val31 {
  if err = gobtools.EncodeBool(buf, (*r.CompileDex)); err != nil {
   return err
  }
 }

 if err = gobtools.EncodeString(buf, r.SystemModules); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.Installable); err != nil {
  return err
 }

 val32 := r.ApexDependencyInfo == nil
 if err = gobtools.EncodeBool(buf, val32); err != nil {
  return err
 }
 if !val32 {
  if err = (*r.ApexDependencyInfo).Encode(ctx, buf); err != nil {
   return err
  }
 }

 if err = r.MaxSdkVersion.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r JavaInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaInfo")
 hasher.WriteInt(58)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.HeaderJars))
 for val1 := 0; val1 < len(r.HeaderJars); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.HeaderJars[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.HeaderJars[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.HeaderJars[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.HeaderJars[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.HeaderJars[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.RepackagedHeaderJars))
 for val5 := 0; val5 < len(r.RepackagedHeaderJars); val5++ {
  hasher.WriteString("android/soong/android:android.Path")
  val6 := r.RepackagedHeaderJars[val5] == nil
  if val6 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.RepackagedHeaderJars[val5]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val7 := r.RepackagedHeaderJars[val5] == nil
     if val7 {
      hasher.WriteByte(0)
     } else {
      val8 := func(hasher *proptools.Hasher) error {
       return r.RepackagedHeaderJars[val5].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val8); err != nil {
       return err
      }
     }
    }
   } else {
    r.RepackagedHeaderJars[val5].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.LocalHeaderJarsPreJarjar))
 for val9 := 0; val9 < len(r.LocalHeaderJarsPreJarjar); val9++ {
  hasher.WriteString("android/soong/android:android.Path")
  val10 := r.LocalHeaderJarsPreJarjar[val9] == nil
  if val10 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.LocalHeaderJarsPreJarjar[val9]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val11 := r.LocalHeaderJarsPreJarjar[val9] == nil
     if val11 {
      hasher.WriteByte(0)
     } else {
      val12 := func(hasher *proptools.Hasher) error {
       return r.LocalHeaderJarsPreJarjar[val9].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val12); err != nil {
       return err
      }
     }
    }
   } else {
    r.LocalHeaderJarsPreJarjar[val9].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 val17 := func(hasher *proptools.Hasher, val13 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val14 := val13 == nil
  if val14 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val13); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val15 := val13 == nil
     if val15 {
      hasher.WriteByte(0)
     } else {
      val16 := func(hasher *proptools.Hasher) error { return val13.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val16); err != nil {
       return err
      }
     }
    }
   } else {
    val13.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveLibsHeaderJarsForR8.Hash(hasher, "android.Path", val17); err != nil {
  return err
 }
 val22 := func(hasher *proptools.Hasher, val18 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val19 := val18 == nil
  if val19 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val18); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val20 := val18 == nil
     if val20 {
      hasher.WriteByte(0)
     } else {
      val21 := func(hasher *proptools.Hasher) error { return val18.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val21); err != nil {
       return err
      }
     }
    }
   } else {
    val18.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveStaticLibsHeaderJarsForR8.Hash(hasher, "android.Path", val22); err != nil {
  return err
 }
 val27 := func(hasher *proptools.Hasher, val23 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val24 := val23 == nil
  if val24 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val23); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val25 := val23 == nil
     if val25 {
      hasher.WriteByte(0)
     } else {
      val26 := func(hasher *proptools.Hasher) error { return val23.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val26); err != nil {
       return err
      }
     }
    }
   } else {
    val23.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveStaticLibsHeaderJars.Hash(hasher, "android.Path", val27); err != nil {
  return err
 }
 val32 := func(hasher *proptools.Hasher, val28 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val29 := val28 == nil
  if val29 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val28); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val30 := val28 == nil
     if val30 {
      hasher.WriteByte(0)
     } else {
      val31 := func(hasher *proptools.Hasher) error { return val28.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val31); err != nil {
       return err
      }
     }
    }
   } else {
    val28.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveStaticLibsImplementationJars.Hash(hasher, "android.Path", val32); err != nil {
  return err
 }
 val37 := func(hasher *proptools.Hasher, val33 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val34 := val33 == nil
  if val34 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val33); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val35 := val33 == nil
     if val35 {
      hasher.WriteByte(0)
     } else {
      val36 := func(hasher *proptools.Hasher) error { return val33.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val36); err != nil {
       return err
      }
     }
    }
   } else {
    val33.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveStaticLibsResourceJars.Hash(hasher, "android.Path", val37); err != nil {
  return err
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.ImplementationAndResourcesJars))
 for val38 := 0; val38 < len(r.ImplementationAndResourcesJars); val38++ {
  hasher.WriteString("android/soong/android:android.Path")
  val39 := r.ImplementationAndResourcesJars[val38] == nil
  if val39 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ImplementationAndResourcesJars[val38]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val40 := r.ImplementationAndResourcesJars[val38] == nil
     if val40 {
      hasher.WriteByte(0)
     } else {
      val41 := func(hasher *proptools.Hasher) error {
       return r.ImplementationAndResourcesJars[val38].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val41); err != nil {
       return err
      }
     }
    }
   } else {
    r.ImplementationAndResourcesJars[val38].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.ImplementationJars))
 for val42 := 0; val42 < len(r.ImplementationJars); val42++ {
  hasher.WriteString("android/soong/android:android.Path")
  val43 := r.ImplementationJars[val42] == nil
  if val43 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ImplementationJars[val42]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val44 := r.ImplementationJars[val42] == nil
     if val44 {
      hasher.WriteByte(0)
     } else {
      val45 := func(hasher *proptools.Hasher) error {
       return r.ImplementationJars[val42].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val45); err != nil {
       return err
      }
     }
    }
   } else {
    r.ImplementationJars[val42].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.ResourceJars))
 for val46 := 0; val46 < len(r.ResourceJars); val46++ {
  hasher.WriteString("android/soong/android:android.Path")
  val47 := r.ResourceJars[val46] == nil
  if val47 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ResourceJars[val46]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val48 := r.ResourceJars[val46] == nil
     if val48 {
      hasher.WriteByte(0)
     } else {
      val49 := func(hasher *proptools.Hasher) error {
       return r.ResourceJars[val46].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val49); err != nil {
       return err
      }
     }
    }
   } else {
    r.ResourceJars[val46].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.LocalHeaderJars))
 for val50 := 0; val50 < len(r.LocalHeaderJars); val50++ {
  hasher.WriteString("android/soong/android:android.Path")
  val51 := r.LocalHeaderJars[val50] == nil
  if val51 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.LocalHeaderJars[val50]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val52 := r.LocalHeaderJars[val50] == nil
     if val52 {
      hasher.WriteByte(0)
     } else {
      val53 := func(hasher *proptools.Hasher) error {
       return r.LocalHeaderJars[val50].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val53); err != nil {
       return err
      }
     }
    }
   } else {
    r.LocalHeaderJars[val50].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.KotlinHeaderJars))
 for val54 := 0; val54 < len(r.KotlinHeaderJars); val54++ {
  hasher.WriteString("android/soong/android:android.Path")
  val55 := r.KotlinHeaderJars[val54] == nil
  if val55 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.KotlinHeaderJars[val54]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val56 := r.KotlinHeaderJars[val54] == nil
     if val56 {
      hasher.WriteByte(0)
     } else {
      val57 := func(hasher *proptools.Hasher) error {
       return r.KotlinHeaderJars[val54].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val57); err != nil {
       return err
      }
     }
    }
   } else {
    r.KotlinHeaderJars[val54].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.AidlIncludeDirs))
 for val58 := 0; val58 < len(r.AidlIncludeDirs); val58++ {
  hasher.WriteString("android/soong/android:android.Path")
  val59 := r.AidlIncludeDirs[val58] == nil
  if val59 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.AidlIncludeDirs[val58]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val60 := r.AidlIncludeDirs[val58] == nil
     if val60 {
      hasher.WriteByte(0)
     } else {
      val61 := func(hasher *proptools.Hasher) error {
       return r.AidlIncludeDirs[val58].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val61); err != nil {
       return err
      }
     }
    }
   } else {
    r.AidlIncludeDirs[val58].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SrcJarArgs))
 for val62 := 0; val62 < len(r.SrcJarArgs); val62++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SrcJarArgs[val62])
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.SrcJarDeps))
 for val63 := 0; val63 < len(r.SrcJarDeps); val63++ {
  hasher.WriteString("android/soong/android:android.Path")
  val64 := r.SrcJarDeps[val63] == nil
  if val64 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.SrcJarDeps[val63]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val65 := r.SrcJarDeps[val63] == nil
     if val65 {
      hasher.WriteByte(0)
     } else {
      val66 := func(hasher *proptools.Hasher) error {
       return r.SrcJarDeps[val63].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val66); err != nil {
       return err
      }
     }
    }
   } else {
    r.SrcJarDeps[val63].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.map[string]android.Path")
 hasher.WriteInt(len(r.KSnapshotFiles))
 val67 := make([]string, 0, len(r.KSnapshotFiles))
 for val69 := range r.KSnapshotFiles {
  val67 = append(val67, val69)
 }
 proptools.SortOrdered(val67)
 for _, val68 := range val67 {
  hasher.WriteString(":.string")
  hasher.WriteString(val68)
  hasher.WriteString(":java.android.Path")
  val70 := r.KSnapshotFiles[val68] == nil
  if val70 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.KSnapshotFiles[val68]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val71 := r.KSnapshotFiles[val68] == nil
     if val71 {
      hasher.WriteByte(0)
     } else {
      val72 := func(hasher *proptools.Hasher) error {
       return r.KSnapshotFiles[val68].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val72); err != nil {
       return err
      }
     }
    }
   } else {
    r.KSnapshotFiles[val68].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 val77 := func(hasher *proptools.Hasher, val73 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val74 := val73 == nil
  if val74 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val73); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val75 := val73 == nil
     if val75 {
      hasher.WriteByte(0)
     } else {
      val76 := func(hasher *proptools.Hasher) error { return val73.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val76); err != nil {
       return err
      }
     }
    }
   } else {
    val73.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveSrcFiles.Hash(hasher, "android.Path", val77); err != nil {
  return err
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.ExportedPlugins))
 for val78 := 0; val78 < len(r.ExportedPlugins); val78++ {
  hasher.WriteString("android/soong/android:android.Path")
  val79 := r.ExportedPlugins[val78] == nil
  if val79 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ExportedPlugins[val78]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val80 := r.ExportedPlugins[val78] == nil
     if val80 {
      hasher.WriteByte(0)
     } else {
      val81 := func(hasher *proptools.Hasher) error {
       return r.ExportedPlugins[val78].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val81); err != nil {
       return err
      }
     }
    }
   } else {
    r.ExportedPlugins[val78].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.ExportedPluginClasses))
 for val82 := 0; val82 < len(r.ExportedPluginClasses); val82++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.ExportedPluginClasses[val82])
 }
 hasher.WriteString(":.bool")
 if r.ExportedPluginDisableTurbine {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 if err := r.JacocoInfo.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":java.StubsLinkType")
 hasher.WriteString(":.int")
 hasher.WriteUint64(uint64(int(r.StubsLinkType)))
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.AconfigIntermediateCacheOutputPaths))
 for val83 := 0; val83 < len(r.AconfigIntermediateCacheOutputPaths); val83++ {
  hasher.WriteString("android/soong/android:android.Path")
  val84 := r.AconfigIntermediateCacheOutputPaths[val83] == nil
  if val84 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.AconfigIntermediateCacheOutputPaths[val83]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val85 := r.AconfigIntermediateCacheOutputPaths[val83] == nil
     if val85 {
      hasher.WriteByte(0)
     } else {
      val86 := func(hasher *proptools.Hasher) error {
       return r.AconfigIntermediateCacheOutputPaths[val83].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val86); err != nil {
       return err
      }
     }
    }
   } else {
    r.AconfigIntermediateCacheOutputPaths[val83].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 if err := r.SdkVersion.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":java.android.Path")
 val87 := r.OutputFile == nil
 if val87 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.OutputFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val88 := r.OutputFile == nil
    if val88 {
     hasher.WriteByte(0)
    } else {
     val89 := func(hasher *proptools.Hasher) error { return r.OutputFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val89); err != nil {
      return err
     }
    }
   }
  } else {
   r.OutputFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.ExtraOutputFiles))
 for val90 := 0; val90 < len(r.ExtraOutputFiles); val90++ {
  hasher.WriteString("android/soong/android:android.Path")
  val91 := r.ExtraOutputFiles[val90] == nil
  if val91 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ExtraOutputFiles[val90]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val92 := r.ExtraOutputFiles[val90] == nil
     if val92 {
      hasher.WriteByte(0)
     } else {
      val93 := func(hasher *proptools.Hasher) error {
       return r.ExtraOutputFiles[val90].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val93); err != nil {
       return err
      }
     }
    }
   } else {
    r.ExtraOutputFiles[val90].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.*AndroidLibraryDependencyInfo")
 val94 := r.AndroidLibraryDependencyInfo == nil
 if val94 {
  hasher.WriteByte(0)
 } else {
  val95 := func(hasher *proptools.Hasher) error {
   if err := (*r.AndroidLibraryDependencyInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.AndroidLibraryDependencyInfo)), val95); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*UsesLibraryDependencyInfo")
 val96 := r.UsesLibraryDependencyInfo == nil
 if val96 {
  hasher.WriteByte(0)
 } else {
  val97 := func(hasher *proptools.Hasher) error {
   if err := (*r.UsesLibraryDependencyInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.UsesLibraryDependencyInfo)), val97); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*ProvidesUsesLibInfo")
 val98 := r.ProvidesUsesLibInfo == nil
 if val98 {
  hasher.WriteByte(0)
 } else {
  val99 := func(hasher *proptools.Hasher) error {
   if err := (*r.ProvidesUsesLibInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ProvidesUsesLibInfo)), val99); err != nil {
   return err
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.MissingOptionalUsesLibs))
 for val100 := 0; val100 < len(r.MissingOptionalUsesLibs); val100++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.MissingOptionalUsesLibs[val100])
 }
 hasher.WriteString(":.*ModuleWithSdkDepInfo")
 val101 := r.ModuleWithSdkDepInfo == nil
 if val101 {
  hasher.WriteByte(0)
 } else {
  val102 := func(hasher *proptools.Hasher) error {
   if err := (*r.ModuleWithSdkDepInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ModuleWithSdkDepInfo)), val102); err != nil {
   return err
  }
 }
 if err := r.DexJarFile.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":java.android.Path")
 val103 := r.InstallFile == nil
 if val103 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.InstallFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val104 := r.InstallFile == nil
    if val104 {
     hasher.WriteByte(0)
    } else {
     val105 := func(hasher *proptools.Hasher) error { return r.InstallFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val105); err != nil {
      return err
     }
    }
   }
  } else {
   r.InstallFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.BootDexJarPath.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.HiddenapiClassesJarPaths))
 for val106 := 0; val106 < len(r.HiddenapiClassesJarPaths); val106++ {
  hasher.WriteString("android/soong/android:android.Path")
  val107 := r.HiddenapiClassesJarPaths[val106] == nil
  if val107 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.HiddenapiClassesJarPaths[val106]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val108 := r.HiddenapiClassesJarPaths[val106] == nil
     if val108 {
      hasher.WriteByte(0)
     } else {
      val109 := func(hasher *proptools.Hasher) error {
       return r.HiddenapiClassesJarPaths[val106].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val109); err != nil {
       return err
      }
     }
    }
   } else {
    r.HiddenapiClassesJarPaths[val106].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.*bool")
 val110 := r.UncompressDexState == nil
 if val110 {
  hasher.WriteByte(0)
 } else {
  val111 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.UncompressDexState {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.UncompressDexState)), val111); err != nil {
   return err
  }
 }
 hasher.WriteString(":.bool")
 if r.Active {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.BuiltInstalled)
 hasher.WriteString(":java.android.WritablePath")
 val112 := r.ConfigPath == nil
 if val112 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ConfigPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val113 := r.ConfigPath == nil
    if val113 {
     hasher.WriteByte(0)
    } else {
     val114 := func(hasher *proptools.Hasher) error { return r.ConfigPath.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val114); err != nil {
      return err
     }
    }
   }
  } else {
   r.ConfigPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.LogtagsSrcs))
 for val115 := 0; val115 < len(r.LogtagsSrcs); val115++ {
  hasher.WriteString("android/soong/android:android.Path")
  val116 := r.LogtagsSrcs[val115] == nil
  if val116 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.LogtagsSrcs[val115]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val117 := r.LogtagsSrcs[val115] == nil
     if val117 {
      hasher.WriteByte(0)
     } else {
      val118 := func(hasher *proptools.Hasher) error {
       return r.LogtagsSrcs[val115].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val118); err != nil {
       return err
      }
     }
    }
   } else {
    r.LogtagsSrcs[val115].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 if err := r.ProguardDictionary.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.ProguardUsageZip.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.LinterReports))
 for val119 := 0; val119 < len(r.LinterReports); val119++ {
  hasher.WriteString("android/soong/android:android.Path")
  val120 := r.LinterReports[val119] == nil
  if val120 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.LinterReports[val119]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val121 := r.LinterReports[val119] == nil
     if val121 {
      hasher.WriteByte(0)
     } else {
      val122 := func(hasher *proptools.Hasher) error {
       return r.LinterReports[val119].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val122); err != nil {
       return err
      }
     }
    }
   } else {
    r.LinterReports[val119].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 if err := r.HostdexInstallFile.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.[]android.Path")
 hasher.WriteInt(len(r.GeneratedSrcjars))
 for val123 := 0; val123 < len(r.GeneratedSrcjars); val123++ {
  hasher.WriteString(":java.android.Path")
  val124 := r.GeneratedSrcjars[val123] == nil
  if val124 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.GeneratedSrcjars[val123]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val125 := r.GeneratedSrcjars[val123] == nil
     if val125 {
      hasher.WriteByte(0)
     } else {
      val126 := func(hasher *proptools.Hasher) error {
       return r.GeneratedSrcjars[val123].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val126); err != nil {
       return err
      }
     }
    }
   } else {
    r.GeneratedSrcjars[val123].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.bool")
 if r.ProfileGuided {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.Stem)
 if err := r.DexJarBuildPath.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.*DexpreopterInfo")
 val127 := r.DexpreopterInfo == nil
 if val127 {
  hasher.WriteByte(0)
 } else {
  val128 := func(hasher *proptools.Hasher) error {
   if err := (*r.DexpreopterInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.DexpreopterInfo)), val128); err != nil {
   return err
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.XrefJavaFiles))
 for val129 := 0; val129 < len(r.XrefJavaFiles); val129++ {
  hasher.WriteString("android/soong/android:android.Path")
  val130 := r.XrefJavaFiles[val129] == nil
  if val130 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.XrefJavaFiles[val129]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val131 := r.XrefJavaFiles[val129] == nil
     if val131 {
      hasher.WriteByte(0)
     } else {
      val132 := func(hasher *proptools.Hasher) error {
       return r.XrefJavaFiles[val129].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val132); err != nil {
       return err
      }
     }
    }
   } else {
    r.XrefJavaFiles[val129].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.XrefKotlinFiles))
 for val133 := 0; val133 < len(r.XrefKotlinFiles); val133++ {
  hasher.WriteString("android/soong/android:android.Path")
  val134 := r.XrefKotlinFiles[val133] == nil
  if val134 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.XrefKotlinFiles[val133]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val135 := r.XrefKotlinFiles[val133] == nil
     if val135 {
      hasher.WriteByte(0)
     } else {
      val136 := func(hasher *proptools.Hasher) error {
       return r.XrefKotlinFiles[val133].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val136); err != nil {
       return err
      }
     }
    }
   } else {
    r.XrefKotlinFiles[val133].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.bool")
 if r.HasOverrideMinSdkVersion {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.*bool")
 val137 := r.CompileDex == nil
 if val137 {
  hasher.WriteByte(0)
 } else {
  val138 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.CompileDex {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.CompileDex)), val138); err != nil {
   return err
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.SystemModules)
 hasher.WriteString(":.bool")
 if r.Installable {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.*ApexDependencyInfo")
 val139 := r.ApexDependencyInfo == nil
 if val139 {
  hasher.WriteByte(0)
 } else {
  val140 := func(hasher *proptools.Hasher) error {
   if err := (*r.ApexDependencyInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ApexDependencyInfo)), val140); err != nil {
   return err
  }
 }
 if err := r.MaxSdkVersion.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *JavaInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.HeaderJars = make([]android.Path, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val6 == nil {
    r.HeaderJars[val4] = nil
   } else {
    r.HeaderJars[val4] = val6.(android.Path)
   }
  }
 }

 var val9 int
 err = gobtools.DecodeInt(buf, &val9)
 if err != nil {
  return err
 }
 if val9 != -1 {
  r.RepackagedHeaderJars = make([]android.Path, val9)
  for val10 := 0; val10 < int(val9); val10++ {
   if val12, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val12 == nil {
    r.RepackagedHeaderJars[val10] = nil
   } else {
    r.RepackagedHeaderJars[val10] = val12.(android.Path)
   }
  }
 }

 var val15 int
 err = gobtools.DecodeInt(buf, &val15)
 if err != nil {
  return err
 }
 if val15 != -1 {
  r.LocalHeaderJarsPreJarjar = make([]android.Path, val15)
  for val16 := 0; val16 < int(val15); val16++ {
   if val18, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val18 == nil {
    r.LocalHeaderJarsPreJarjar[val16] = nil
   } else {
    r.LocalHeaderJarsPreJarjar[val16] = val18.(android.Path)
   }
  }
 }

 if err = r.TransitiveLibsHeaderJarsForR8.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveStaticLibsHeaderJarsForR8.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveStaticLibsHeaderJars.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveStaticLibsImplementationJars.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveStaticLibsResourceJars.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 var val26 int
 err = gobtools.DecodeInt(buf, &val26)
 if err != nil {
  return err
 }
 if val26 != -1 {
  r.ImplementationAndResourcesJars = make([]android.Path, val26)
  for val27 := 0; val27 < int(val26); val27++ {
   if val29, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val29 == nil {
    r.ImplementationAndResourcesJars[val27] = nil
   } else {
    r.ImplementationAndResourcesJars[val27] = val29.(android.Path)
   }
  }
 }

 var val32 int
 err = gobtools.DecodeInt(buf, &val32)
 if err != nil {
  return err
 }
 if val32 != -1 {
  r.ImplementationJars = make([]android.Path, val32)
  for val33 := 0; val33 < int(val32); val33++ {
   if val35, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val35 == nil {
    r.ImplementationJars[val33] = nil
   } else {
    r.ImplementationJars[val33] = val35.(android.Path)
   }
  }
 }

 var val38 int
 err = gobtools.DecodeInt(buf, &val38)
 if err != nil {
  return err
 }
 if val38 != -1 {
  r.ResourceJars = make([]android.Path, val38)
  for val39 := 0; val39 < int(val38); val39++ {
   if val41, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val41 == nil {
    r.ResourceJars[val39] = nil
   } else {
    r.ResourceJars[val39] = val41.(android.Path)
   }
  }
 }

 var val44 int
 err = gobtools.DecodeInt(buf, &val44)
 if err != nil {
  return err
 }
 if val44 != -1 {
  r.LocalHeaderJars = make([]android.Path, val44)
  for val45 := 0; val45 < int(val44); val45++ {
   if val47, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val47 == nil {
    r.LocalHeaderJars[val45] = nil
   } else {
    r.LocalHeaderJars[val45] = val47.(android.Path)
   }
  }
 }

 var val50 int
 err = gobtools.DecodeInt(buf, &val50)
 if err != nil {
  return err
 }
 if val50 != -1 {
  r.KotlinHeaderJars = make([]android.Path, val50)
  for val51 := 0; val51 < int(val50); val51++ {
   if val53, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val53 == nil {
    r.KotlinHeaderJars[val51] = nil
   } else {
    r.KotlinHeaderJars[val51] = val53.(android.Path)
   }
  }
 }

 var val56 int
 err = gobtools.DecodeInt(buf, &val56)
 if err != nil {
  return err
 }
 if val56 != -1 {
  r.AidlIncludeDirs = make([]android.Path, val56)
  for val57 := 0; val57 < int(val56); val57++ {
   if val59, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val59 == nil {
    r.AidlIncludeDirs[val57] = nil
   } else {
    r.AidlIncludeDirs[val57] = val59.(android.Path)
   }
  }
 }

 var val61 int
 err = gobtools.DecodeInt(buf, &val61)
 if err != nil {
  return err
 }
 if val61 != -1 {
  r.SrcJarArgs = make([]string, val61)
  for val62 := 0; val62 < int(val61); val62++ {
   err = gobtools.DecodeString(buf, &r.SrcJarArgs[val62])
   if err != nil {
    return err
   }
  }
 }

 var val66 int
 err = gobtools.DecodeInt(buf, &val66)
 if err != nil {
  return err
 }
 if val66 != -1 {
  r.SrcJarDeps = make([]android.Path, val66)
  for val67 := 0; val67 < int(val66); val67++ {
   if val69, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val69 == nil {
    r.SrcJarDeps[val67] = nil
   } else {
    r.SrcJarDeps[val67] = val69.(android.Path)
   }
  }
 }

 var val70 int
 err = gobtools.DecodeInt(buf, &val70)
 if err != nil {
  return err
 }
 if val70 != -1 {
  r.KSnapshotFiles = make(map[string]android.Path, val70)
  for val71 := 0; val71 < int(val70); val71++ {
   var val72 string
   var val73 android.Path
   err = gobtools.DecodeString(buf, &val72)
   if err != nil {
    return err
   }
   if val76, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val76 == nil {
    val73 = nil
   } else {
    val73 = val76.(android.Path)
   }
   r.KSnapshotFiles[val72] = val73
  }
 }

 if err = r.TransitiveSrcFiles.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 var val80 int
 err = gobtools.DecodeInt(buf, &val80)
 if err != nil {
  return err
 }
 if val80 != -1 {
  r.ExportedPlugins = make([]android.Path, val80)
  for val81 := 0; val81 < int(val80); val81++ {
   if val83, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val83 == nil {
    r.ExportedPlugins[val81] = nil
   } else {
    r.ExportedPlugins[val81] = val83.(android.Path)
   }
  }
 }

 var val85 int
 err = gobtools.DecodeInt(buf, &val85)
 if err != nil {
  return err
 }
 if val85 != -1 {
  r.ExportedPluginClasses = make([]string, val85)
  for val86 := 0; val86 < int(val85); val86++ {
   err = gobtools.DecodeString(buf, &r.ExportedPluginClasses[val86])
   if err != nil {
    return err
   }
  }
 }

 err = gobtools.DecodeBool(buf, &r.ExportedPluginDisableTurbine)
 if err != nil {
  return err
 }

 if err = r.JacocoInfo.Decode(ctx, buf); err != nil {
  return err
 }

 var val91 int
 err = gobtools.DecodeInt(buf, &val91)
 if err != nil {
  return err
 }
 r.StubsLinkType = StubsLinkType(val91)

 var val95 int
 err = gobtools.DecodeInt(buf, &val95)
 if err != nil {
  return err
 }
 if val95 != -1 {
  r.AconfigIntermediateCacheOutputPaths = make([]android.Path, val95)
  for val96 := 0; val96 < int(val95); val96++ {
   if val98, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val98 == nil {
    r.AconfigIntermediateCacheOutputPaths[val96] = nil
   } else {
    r.AconfigIntermediateCacheOutputPaths[val96] = val98.(android.Path)
   }
  }
 }

 if err = r.SdkVersion.Decode(ctx, buf); err != nil {
  return err
 }

 if val101, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val101 == nil {
  r.OutputFile = nil
 } else {
  r.OutputFile = val101.(android.Path)
 }

 var val104 int
 err = gobtools.DecodeInt(buf, &val104)
 if err != nil {
  return err
 }
 if val104 != -1 {
  r.ExtraOutputFiles = make([]android.Path, val104)
  for val105 := 0; val105 < int(val104); val105++ {
   if val107, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val107 == nil {
    r.ExtraOutputFiles[val105] = nil
   } else {
    r.ExtraOutputFiles[val105] = val107.(android.Path)
   }
  }
 }

 var val109 bool
 if err = gobtools.DecodeBool(buf, &val109); err != nil {
  return err
 }
 if !val109 {
  var val108 AndroidLibraryDependencyInfo
  if err = val108.Decode(ctx, buf); err != nil {
   return err
  }
  r.AndroidLibraryDependencyInfo = &val108
 }

 var val112 bool
 if err = gobtools.DecodeBool(buf, &val112); err != nil {
  return err
 }
 if !val112 {
  var val111 UsesLibraryDependencyInfo
  if err = val111.Decode(ctx, buf); err != nil {
   return err
  }
  r.UsesLibraryDependencyInfo = &val111
 }

 var val115 bool
 if err = gobtools.DecodeBool(buf, &val115); err != nil {
  return err
 }
 if !val115 {
  var val114 ProvidesUsesLibInfo
  if err = val114.Decode(ctx, buf); err != nil {
   return err
  }
  r.ProvidesUsesLibInfo = &val114
 }

 var val118 int
 err = gobtools.DecodeInt(buf, &val118)
 if err != nil {
  return err
 }
 if val118 != -1 {
  r.MissingOptionalUsesLibs = make([]string, val118)
  for val119 := 0; val119 < int(val118); val119++ {
   err = gobtools.DecodeString(buf, &r.MissingOptionalUsesLibs[val119])
   if err != nil {
    return err
   }
  }
 }

 var val122 bool
 if err = gobtools.DecodeBool(buf, &val122); err != nil {
  return err
 }
 if !val122 {
  var val121 ModuleWithSdkDepInfo
  if err = val121.Decode(ctx, buf); err != nil {
   return err
  }
  r.ModuleWithSdkDepInfo = &val121
 }

 if err = r.DexJarFile.Decode(ctx, buf); err != nil {
  return err
 }

 if val126, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val126 == nil {
  r.InstallFile = nil
 } else {
  r.InstallFile = val126.(android.Path)
 }

 if err = r.BootDexJarPath.Decode(ctx, buf); err != nil {
  return err
 }

 var val130 int
 err = gobtools.DecodeInt(buf, &val130)
 if err != nil {
  return err
 }
 if val130 != -1 {
  r.HiddenapiClassesJarPaths = make([]android.Path, val130)
  for val131 := 0; val131 < int(val130); val131++ {
   if val133, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val133 == nil {
    r.HiddenapiClassesJarPaths[val131] = nil
   } else {
    r.HiddenapiClassesJarPaths[val131] = val133.(android.Path)
   }
  }
 }

 var val135 bool
 if err = gobtools.DecodeBool(buf, &val135); err != nil {
  return err
 }
 if !val135 {
  var val134 bool
  err = gobtools.DecodeBool(buf, &val134)
  if err != nil {
   return err
  }
  r.UncompressDexState = &val134
 }

 err = gobtools.DecodeBool(buf, &r.Active)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.BuiltInstalled)
 if err != nil {
  return err
 }

 if val140, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val140 == nil {
  r.ConfigPath = nil
 } else {
  r.ConfigPath = val140.(android.WritablePath)
 }

 var val143 int
 err = gobtools.DecodeInt(buf, &val143)
 if err != nil {
  return err
 }
 if val143 != -1 {
  r.LogtagsSrcs = make([]android.Path, val143)
  for val144 := 0; val144 < int(val143); val144++ {
   if val146, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val146 == nil {
    r.LogtagsSrcs[val144] = nil
   } else {
    r.LogtagsSrcs[val144] = val146.(android.Path)
   }
  }
 }

 if err = r.ProguardDictionary.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.ProguardUsageZip.Decode(ctx, buf); err != nil {
  return err
 }

 var val151 int
 err = gobtools.DecodeInt(buf, &val151)
 if err != nil {
  return err
 }
 if val151 != -1 {
  r.LinterReports = make([]android.Path, val151)
  for val152 := 0; val152 < int(val151); val152++ {
   if val154, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val154 == nil {
    r.LinterReports[val152] = nil
   } else {
    r.LinterReports[val152] = val154.(android.Path)
   }
  }
 }

 if err = r.HostdexInstallFile.Decode(ctx, buf); err != nil {
  return err
 }

 var val157 int
 err = gobtools.DecodeInt(buf, &val157)
 if err != nil {
  return err
 }
 if val157 != -1 {
  r.GeneratedSrcjars = make([]android.Path, val157)
  for val158 := 0; val158 < int(val157); val158++ {
   if val160, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val160 == nil {
    r.GeneratedSrcjars[val158] = nil
   } else {
    r.GeneratedSrcjars[val158] = val160.(android.Path)
   }
  }
 }

 err = gobtools.DecodeBool(buf, &r.ProfileGuided)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.Stem)
 if err != nil {
  return err
 }

 if err = r.DexJarBuildPath.Decode(ctx, buf); err != nil {
  return err
 }

 var val165 bool
 if err = gobtools.DecodeBool(buf, &val165); err != nil {
  return err
 }
 if !val165 {
  var val164 DexpreopterInfo
  if err = val164.Decode(ctx, buf); err != nil {
   return err
  }
  r.DexpreopterInfo = &val164
 }

 var val169 int
 err = gobtools.DecodeInt(buf, &val169)
 if err != nil {
  return err
 }
 if val169 != -1 {
  r.XrefJavaFiles = make([]android.Path, val169)
  for val170 := 0; val170 < int(val169); val170++ {
   if val172, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val172 == nil {
    r.XrefJavaFiles[val170] = nil
   } else {
    r.XrefJavaFiles[val170] = val172.(android.Path)
   }
  }
 }

 var val175 int
 err = gobtools.DecodeInt(buf, &val175)
 if err != nil {
  return err
 }
 if val175 != -1 {
  r.XrefKotlinFiles = make([]android.Path, val175)
  for val176 := 0; val176 < int(val175); val176++ {
   if val178, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val178 == nil {
    r.XrefKotlinFiles[val176] = nil
   } else {
    r.XrefKotlinFiles[val176] = val178.(android.Path)
   }
  }
 }

 err = gobtools.DecodeBool(buf, &r.HasOverrideMinSdkVersion)
 if err != nil {
  return err
 }

 var val181 bool
 if err = gobtools.DecodeBool(buf, &val181); err != nil {
  return err
 }
 if !val181 {
  var val180 bool
  err = gobtools.DecodeBool(buf, &val180)
  if err != nil {
   return err
  }
  r.CompileDex = &val180
 }

 err = gobtools.DecodeString(buf, &r.SystemModules)
 if err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.Installable)
 if err != nil {
  return err
 }

 var val186 bool
 if err = gobtools.DecodeBool(buf, &val186); err != nil {
  return err
 }
 if !val186 {
  var val185 ApexDependencyInfo
  if err = val185.Decode(ctx, buf); err != nil {
   return err
  }
  r.ApexDependencyInfo = &val185
 }

 if err = r.MaxSdkVersion.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var JavaInfoGobRegId int16

func (r JavaInfo) GetTypeId() int16 {
 return JavaInfoGobRegId
}

func (r DexpreopterInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.OutputProfilePathOnHost); err != nil {
  return err
 }

 if r.ApexSystemServerDexpreoptInstalls == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ApexSystemServerDexpreoptInstalls)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.ApexSystemServerDexpreoptInstalls); val1++ {
   if err = r.ApexSystemServerDexpreoptInstalls[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if r.ApexSystemServerDexJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ApexSystemServerDexJars)); err != nil {
   return err
  }
  for val2 := 0; val2 < len(r.ApexSystemServerDexJars); val2++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.ApexSystemServerDexJars[val2]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r DexpreopterInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.DexpreopterInfo")
 hasher.WriteInt(3)
 hasher.WriteString(":java.android.Path")
 val1 := r.OutputProfilePathOnHost == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.OutputProfilePathOnHost); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.OutputProfilePathOnHost == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.OutputProfilePathOnHost.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.OutputProfilePathOnHost.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.[]DexpreopterInstall")
 hasher.WriteInt(len(r.ApexSystemServerDexpreoptInstalls))
 for val4 := 0; val4 < len(r.ApexSystemServerDexpreoptInstalls); val4++ {
  if err := r.ApexSystemServerDexpreoptInstalls[val4].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.ApexSystemServerDexJars))
 for val5 := 0; val5 < len(r.ApexSystemServerDexJars); val5++ {
  hasher.WriteString("android/soong/android:android.Path")
  val6 := r.ApexSystemServerDexJars[val5] == nil
  if val6 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ApexSystemServerDexJars[val5]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val7 := r.ApexSystemServerDexJars[val5] == nil
     if val7 {
      hasher.WriteByte(0)
     } else {
      val8 := func(hasher *proptools.Hasher) error {
       return r.ApexSystemServerDexJars[val5].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val8); err != nil {
       return err
      }
     }
    }
   } else {
    r.ApexSystemServerDexJars[val5].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 return nil
}

func (r *DexpreopterInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.OutputProfilePathOnHost = nil
 } else {
  r.OutputProfilePathOnHost = val2.(android.Path)
 }

 var val4 int
 err = gobtools.DecodeInt(buf, &val4)
 if err != nil {
  return err
 }
 if val4 != -1 {
  r.ApexSystemServerDexpreoptInstalls = make([]DexpreopterInstall, val4)
  for val5 := 0; val5 < int(val4); val5++ {
   if err = r.ApexSystemServerDexpreoptInstalls[val5].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 var val9 int
 err = gobtools.DecodeInt(buf, &val9)
 if err != nil {
  return err
 }
 if val9 != -1 {
  r.ApexSystemServerDexJars = make([]android.Path, val9)
  for val10 := 0; val10 < int(val9); val10++ {
   if val12, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val12 == nil {
    r.ApexSystemServerDexJars[val10] = nil
   } else {
    r.ApexSystemServerDexJars[val10] = val12.(android.Path)
   }
  }
 }

 return err
}

var DexpreopterInfoGobRegId int16

func (r DexpreopterInfo) GetTypeId() int16 {
 return DexpreopterInfoGobRegId
}

func (r JavaLibraryInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeBool(buf, r.Prebuilt); err != nil {
  return err
 }

 if r.PermittedPackages == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.PermittedPackages)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.PermittedPackages); val1++ {
   if err = gobtools.EncodeString(buf, r.PermittedPackages[val1]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r JavaLibraryInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaLibraryInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.bool")
 if r.Prebuilt {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.PermittedPackages))
 for val1 := 0; val1 < len(r.PermittedPackages); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.PermittedPackages[val1])
 }
 return nil
}

func (r *JavaLibraryInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeBool(buf, &r.Prebuilt)
 if err != nil {
  return err
 }

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.PermittedPackages = make([]string, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   err = gobtools.DecodeString(buf, &r.PermittedPackages[val4])
   if err != nil {
    return err
   }
  }
 }

 return err
}

var JavaLibraryInfoGobRegId int16

func (r JavaLibraryInfo) GetTypeId() int16 {
 return JavaLibraryInfoGobRegId
}

func (r JavaDexImportInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error
 return err
}

func (r JavaDexImportInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaDexImportInfo")
 hasher.WriteInt(0)
 return nil
}

func (r *JavaDexImportInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 return err
}

var JavaDexImportInfoGobRegId int16

func (r JavaDexImportInfo) GetTypeId() int16 {
 return JavaDexImportInfoGobRegId
}

func (r SyspropPublicStubInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 val1 := r.JavaInfo == nil
 if err = gobtools.EncodeBool(buf, val1); err != nil {
  return err
 }
 if !val1 {
  if err = (*r.JavaInfo).Encode(ctx, buf); err != nil {
   return err
  }
 }
 return err
}

func (r SyspropPublicStubInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.SyspropPublicStubInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.*JavaInfo")
 val1 := r.JavaInfo == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  val2 := func(hasher *proptools.Hasher) error {
   if err := (*r.JavaInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.JavaInfo)), val2); err != nil {
   return err
  }
 }
 return nil
}

func (r *SyspropPublicStubInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 bool
 if err = gobtools.DecodeBool(buf, &val2); err != nil {
  return err
 }
 if !val2 {
  var val1 JavaInfo
  if err = val1.Decode(ctx, buf); err != nil {
   return err
  }
  r.JavaInfo = &val1
 }

 return err
}

var SyspropPublicStubInfoGobRegId int16

func (r SyspropPublicStubInfo) GetTypeId() int16 {
 return SyspropPublicStubInfoGobRegId
}

func (r jniLib) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeString(buf, r.name); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.path); err != nil {
  return err
 }

 if err = r.target.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.coverageFile.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.unstrippedFile); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.partition); err != nil {
  return err
 }

 if r.installPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.installPaths)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.installPaths); val1++ {
   if err = r.installPaths[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }
 return err
}

func (r jniLib) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.jniLib")
 hasher.WriteInt(7)
 hasher.WriteString(":.string")
 hasher.WriteString(r.name)
 hasher.WriteString(":java.android.Path")
 val1 := r.path == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.path); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.path == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.path.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.path.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.target.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.coverageFile.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.unstrippedFile == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.unstrippedFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.unstrippedFile == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error {
      return r.unstrippedFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.unstrippedFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.partition)
 hasher.WriteString(":java.android.InstallPaths")
 hasher.WriteString(":.[]InstallPath")
 hasher.WriteInt(len(r.installPaths))
 for val7 := 0; val7 < len(r.installPaths); val7++ {
  if err := r.installPaths[val7].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *jniLib) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 err = gobtools.DecodeString(buf, &r.name)
 if err != nil {
  return err
 }

 if val3, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val3 == nil {
  r.path = nil
 } else {
  r.path = val3.(android.Path)
 }

 if err = r.target.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.coverageFile.Decode(ctx, buf); err != nil {
  return err
 }

 if val7, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val7 == nil {
  r.unstrippedFile = nil
 } else {
  r.unstrippedFile = val7.(android.Path)
 }

 err = gobtools.DecodeString(buf, &r.partition)
 if err != nil {
  return err
 }

 var val11 int
 err = gobtools.DecodeInt(buf, &val11)
 if err != nil {
  return err
 }
 if val11 != -1 {
  r.installPaths = make([]android.InstallPath, val11)
  for val12 := 0; val12 < int(val11); val12++ {
   if err = r.installPaths[val12].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 return err
}

var jniLibGobRegId int16

func (r jniLib) GetTypeId() int16 {
 return jniLibGobRegId
}

func (r JavaTestInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.TestConfig); err != nil {
  return err
 }
 return err
}

func (r JavaTestInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaTestInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":java.android.Path")
 val1 := r.TestConfig == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.TestConfig); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.TestConfig == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.TestConfig.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.TestConfig.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *JavaTestInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.TestConfig = nil
 } else {
  r.TestConfig = val2.(android.Path)
 }

 return err
}

var JavaTestInfoGobRegId int16

func (r JavaTestInfo) GetTypeId() int16 {
 return JavaTestInfoGobRegId
}

func (r JavaApiImportInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.ApiFile); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.ApiSurface); err != nil {
  return err
 }
 return err
}

func (r JavaApiImportInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaApiImportInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":java.android.Path")
 val1 := r.ApiFile == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ApiFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.ApiFile == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.ApiFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.ApiFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.ApiSurface)
 return nil
}

func (r *JavaApiImportInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.ApiFile = nil
 } else {
  r.ApiFile = val2.(android.Path)
 }

 err = gobtools.DecodeString(buf, &r.ApiSurface)
 if err != nil {
  return err
 }

 return err
}

var JavaApiImportInfoGobRegId int16

func (r JavaApiImportInfo) GetTypeId() int16 {
 return JavaApiImportInfoGobRegId
}

func (r JavaImportDepInSameApexChecker) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r JavaImportDepInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaImportDepInSameApexChecker")
 hasher.WriteInt(1)
 if err := r.BaseDepInSameApexChecker.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *JavaImportDepInSameApexChecker) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var JavaImportDepInSameApexCheckerGobRegId int16

func (r JavaImportDepInSameApexChecker) GetTypeId() int16 {
 return JavaImportDepInSameApexCheckerGobRegId
}

// end of java.go

// begin of lint.go
func init() {
 LintInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(LintInfo) })
 ModuleLintReportZipsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ModuleLintReportZipsInfo) })
}

func (r LintInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.HTML); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.Text); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.XML); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.ReferenceBaseline); err != nil {
  return err
 }

 if err = r.TransitiveHTML.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveText.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveXML.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveBaseline.EncodeInterface(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r LintInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.LintInfo")
 hasher.WriteInt(8)
 hasher.WriteString(":java.android.Path")
 val1 := r.HTML == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.HTML); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.HTML == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.HTML.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.HTML.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.Text == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.Text); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.Text == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error { return r.Text.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.Text.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val7 := r.XML == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.XML); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val8 := r.XML == nil
    if val8 {
     hasher.WriteByte(0)
    } else {
     val9 := func(hasher *proptools.Hasher) error { return r.XML.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
      return err
     }
    }
   }
  } else {
   r.XML.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val10 := r.ReferenceBaseline == nil
 if val10 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.ReferenceBaseline); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val11 := r.ReferenceBaseline == nil
    if val11 {
     hasher.WriteByte(0)
    } else {
     val12 := func(hasher *proptools.Hasher) error {
      return r.ReferenceBaseline.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val12); err != nil {
      return err
     }
    }
   }
  } else {
   r.ReferenceBaseline.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 val17 := func(hasher *proptools.Hasher, val13 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val14 := val13 == nil
  if val14 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val13); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val15 := val13 == nil
     if val15 {
      hasher.WriteByte(0)
     } else {
      val16 := func(hasher *proptools.Hasher) error { return val13.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val16); err != nil {
       return err
      }
     }
    }
   } else {
    val13.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveHTML.Hash(hasher, "android.Path", val17); err != nil {
  return err
 }
 val22 := func(hasher *proptools.Hasher, val18 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val19 := val18 == nil
  if val19 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val18); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val20 := val18 == nil
     if val20 {
      hasher.WriteByte(0)
     } else {
      val21 := func(hasher *proptools.Hasher) error { return val18.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val21); err != nil {
       return err
      }
     }
    }
   } else {
    val18.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveText.Hash(hasher, "android.Path", val22); err != nil {
  return err
 }
 val27 := func(hasher *proptools.Hasher, val23 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val24 := val23 == nil
  if val24 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val23); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val25 := val23 == nil
     if val25 {
      hasher.WriteByte(0)
     } else {
      val26 := func(hasher *proptools.Hasher) error { return val23.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val26); err != nil {
       return err
      }
     }
    }
   } else {
    val23.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveXML.Hash(hasher, "android.Path", val27); err != nil {
  return err
 }
 val32 := func(hasher *proptools.Hasher, val28 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val29 := val28 == nil
  if val29 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val28); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val30 := val28 == nil
     if val30 {
      hasher.WriteByte(0)
     } else {
      val31 := func(hasher *proptools.Hasher) error { return val28.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val31); err != nil {
       return err
      }
     }
    }
   } else {
    val28.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveBaseline.Hash(hasher, "android.Path", val32); err != nil {
  return err
 }
 return nil
}

func (r *LintInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.HTML = nil
 } else {
  r.HTML = val2.(android.Path)
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.Text = nil
 } else {
  r.Text = val4.(android.Path)
 }

 if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val6 == nil {
  r.XML = nil
 } else {
  r.XML = val6.(android.Path)
 }

 if val8, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val8 == nil {
  r.ReferenceBaseline = nil
 } else {
  r.ReferenceBaseline = val8.(android.Path)
 }

 if err = r.TransitiveHTML.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveText.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveXML.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = r.TransitiveBaseline.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 return err
}

var LintInfoGobRegId int16

func (r LintInfo) GetTypeId() int16 {
 return LintInfoGobRegId
}

func (r ModuleLintReportZipsInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.HtmlZip); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.TextZip); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.XmlZip); err != nil {
  return err
 }
 return err
}

func (r ModuleLintReportZipsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ModuleLintReportZipsInfo")
 hasher.WriteInt(3)
 hasher.WriteString(":java.android.Path")
 val1 := r.HtmlZip == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.HtmlZip); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.HtmlZip == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.HtmlZip.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.HtmlZip.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val4 := r.TextZip == nil
 if val4 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.TextZip); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val5 := r.TextZip == nil
    if val5 {
     hasher.WriteByte(0)
    } else {
     val6 := func(hasher *proptools.Hasher) error { return r.TextZip.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val6); err != nil {
      return err
     }
    }
   }
  } else {
   r.TextZip.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Path")
 val7 := r.XmlZip == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.XmlZip); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val8 := r.XmlZip == nil
    if val8 {
     hasher.WriteByte(0)
    } else {
     val9 := func(hasher *proptools.Hasher) error { return r.XmlZip.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val9); err != nil {
      return err
     }
    }
   }
  } else {
   r.XmlZip.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *ModuleLintReportZipsInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.HtmlZip = nil
 } else {
  r.HtmlZip = val2.(android.Path)
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.TextZip = nil
 } else {
  r.TextZip = val4.(android.Path)
 }

 if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val6 == nil {
  r.XmlZip = nil
 } else {
  r.XmlZip = val6.(android.Path)
 }

 return err
}

var ModuleLintReportZipsInfoGobRegId int16

func (r ModuleLintReportZipsInfo) GetTypeId() int16 {
 return ModuleLintReportZipsInfoGobRegId
}

// end of lint.go

// begin of platform_compat_config.go
func init() {
 PlatformCompatConfigInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(PlatformCompatConfigInfo) })
}

func (r PlatformCompatConfigInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.CompatConfig.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.SubDir); err != nil {
  return err
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.CompatConfigMetadata); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.IncludeInMergedXml); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.Prebuilt); err != nil {
  return err
 }
 return err
}

func (r PlatformCompatConfigInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.PlatformCompatConfigInfo")
 hasher.WriteInt(5)
 if err := r.CompatConfig.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.SubDir)
 hasher.WriteString(":java.android.Path")
 val1 := r.CompatConfigMetadata == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.CompatConfigMetadata); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.CompatConfigMetadata == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.CompatConfigMetadata.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.CompatConfigMetadata.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.bool")
 if r.IncludeInMergedXml {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Prebuilt {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *PlatformCompatConfigInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.CompatConfig.Decode(ctx, buf); err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.SubDir)
 if err != nil {
  return err
 }

 if val4, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val4 == nil {
  r.CompatConfigMetadata = nil
 } else {
  r.CompatConfigMetadata = val4.(android.Path)
 }

 err = gobtools.DecodeBool(buf, &r.IncludeInMergedXml)
 if err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.Prebuilt)
 if err != nil {
  return err
 }

 return err
}

var PlatformCompatConfigInfoGobRegId int16

func (r PlatformCompatConfigInfo) GetTypeId() int16 {
 return PlatformCompatConfigInfoGobRegId
}

// end of platform_compat_config.go

// begin of plugin.go
func init() {
 JavaPluginInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(JavaPluginInfo) })
 KotlinPluginInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(KotlinPluginInfo) })
}

func (r JavaPluginInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 val1 := r.ProcessorClass == nil
 if err = gobtools.EncodeBool(buf, val1); err != nil {
  return err
 }
 if !val1 {
  if err = gobtools.EncodeString(buf, (*r.ProcessorClass)); err != nil {
   return err
  }
 }

 if err = gobtools.EncodeBool(buf, r.GeneratesApi); err != nil {
  return err
 }
 return err
}

func (r JavaPluginInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.JavaPluginInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.*string")
 val1 := r.ProcessorClass == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  val2 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.ProcessorClass))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ProcessorClass)), val2); err != nil {
   return err
  }
 }
 hasher.WriteString(":.bool")
 if r.GeneratesApi {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *JavaPluginInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 bool
 if err = gobtools.DecodeBool(buf, &val2); err != nil {
  return err
 }
 if !val2 {
  var val1 string
  err = gobtools.DecodeString(buf, &val1)
  if err != nil {
   return err
  }
  r.ProcessorClass = &val1
 }

 err = gobtools.DecodeBool(buf, &r.GeneratesApi)
 if err != nil {
  return err
 }

 return err
}

var JavaPluginInfoGobRegId int16

func (r JavaPluginInfo) GetTypeId() int16 {
 return JavaPluginInfoGobRegId
}

func (r KotlinPluginInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error
 return err
}

func (r KotlinPluginInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.KotlinPluginInfo")
 hasher.WriteInt(0)
 return nil
}

func (r *KotlinPluginInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 return err
}

var KotlinPluginInfoGobRegId int16

func (r KotlinPluginInfo) GetTypeId() int16 {
 return KotlinPluginInfoGobRegId
}

// end of plugin.go

// begin of ravenwood.go
func init() {
 ravenwoodLibgroupJniDepProviderInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ravenwoodLibgroupJniDepProviderInfo) })
 ravenwoodLibgroupInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ravenwoodLibgroupInfo) })
}

func (r ravenwoodLibgroupJniDepProviderInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.names == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.names)); err != nil {
   return err
  }
  for val1, val2 := range r.names {
   if err = gobtools.EncodeString(buf, val1); err != nil {
    return err
   }
   if err = gobtools.EncodeBool(buf, val2); err != nil {
    return err
   }
  }
 }
 return err
}

func (r ravenwoodLibgroupJniDepProviderInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ravenwoodLibgroupJniDepProviderInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.map[string]bool")
 hasher.WriteInt(len(r.names))
 val1 := make([]string, 0, len(r.names))
 for val3 := range r.names {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":.string")
  hasher.WriteString(val2)
  hasher.WriteString(":.bool")
  if r.names[val2] {
   hasher.WriteByte(1)
  } else {
   hasher.WriteByte(0)
  }
 }
 return nil
}

func (r *ravenwoodLibgroupJniDepProviderInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val1 int
 err = gobtools.DecodeInt(buf, &val1)
 if err != nil {
  return err
 }
 if val1 != -1 {
  r.names = make(map[string]bool, val1)
  for val2 := 0; val2 < int(val1); val2++ {
   var val3 string
   var val4 bool
   err = gobtools.DecodeString(buf, &val3)
   if err != nil {
    return err
   }
   err = gobtools.DecodeBool(buf, &val4)
   if err != nil {
    return err
   }
   r.names[val3] = val4
  }
 }

 return err
}

var ravenwoodLibgroupJniDepProviderInfoGobRegId int16

func (r ravenwoodLibgroupJniDepProviderInfo) GetTypeId() int16 {
 return ravenwoodLibgroupJniDepProviderInfoGobRegId
}

func (r ravenwoodLibgroupInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.libs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.libs)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.libs); val1++ {
   if err = gobtools.EncodeString(buf, r.libs[val1]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r ravenwoodLibgroupInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ravenwoodLibgroupInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.libs))
 for val1 := 0; val1 < len(r.libs); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.libs[val1])
 }
 return nil
}

func (r *ravenwoodLibgroupInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.libs = make([]string, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   err = gobtools.DecodeString(buf, &r.libs[val3])
   if err != nil {
    return err
   }
  }
 }

 return err
}

var ravenwoodLibgroupInfoGobRegId int16

func (r ravenwoodLibgroupInfo) GetTypeId() int16 {
 return ravenwoodLibgroupInfoGobRegId
}

// end of ravenwood.go

// begin of robolectric.go
func init() {
 RobolectricRuntimesInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(RobolectricRuntimesInfo) })
}

func (r RobolectricRuntimesInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.Runtimes == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.Runtimes)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.Runtimes); val1++ {
   if err = r.Runtimes[val1].Encode(ctx, buf); err != nil {
    return err
   }
  }
 }
 return err
}

func (r RobolectricRuntimesInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.RobolectricRuntimesInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.[]android.InstallPath")
 hasher.WriteInt(len(r.Runtimes))
 for val1 := 0; val1 < len(r.Runtimes); val1++ {
  if err := r.Runtimes[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *RobolectricRuntimesInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.Runtimes = make([]android.InstallPath, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   if err = r.Runtimes[val3].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 return err
}

var RobolectricRuntimesInfoGobRegId int16

func (r RobolectricRuntimesInfo) GetTypeId() int16 {
 return RobolectricRuntimesInfoGobRegId
}

// end of robolectric.go

// begin of rro.go
func init() {
 RuntimeResourceOverlayInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(RuntimeResourceOverlayInfo) })
}

func (r RuntimeResourceOverlayInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = gobtools.EncodeInterface(ctx, buf, r.OutputFile); err != nil {
  return err
 }

 if err = r.Certificate.Encode(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.Theme); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.OverriddenManifestPackageName); err != nil {
  return err
 }
 return err
}

func (r RuntimeResourceOverlayInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.RuntimeResourceOverlayInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":java.android.Path")
 val1 := r.OutputFile == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.OutputFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.OutputFile == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.OutputFile.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.OutputFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.Certificate.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.Theme)
 hasher.WriteString(":.string")
 hasher.WriteString(r.OverriddenManifestPackageName)
 return nil
}

func (r *RuntimeResourceOverlayInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if val2, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val2 == nil {
  r.OutputFile = nil
 } else {
  r.OutputFile = val2.(android.Path)
 }

 if err = r.Certificate.Decode(ctx, buf); err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.Theme)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.OverriddenManifestPackageName)
 if err != nil {
  return err
 }

 return err
}

var RuntimeResourceOverlayInfoGobRegId int16

func (r RuntimeResourceOverlayInfo) GetTypeId() int16 {
 return RuntimeResourceOverlayInfoGobRegId
}

// end of rro.go

// begin of sdk_library.go
func init() {
 SdkLibraryComponentDependencyInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SdkLibraryComponentDependencyInfo) })
 ApiScopePathsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ApiScopePathsInfo) })
 ApiScopePropsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ApiScopePropsInfo) })
 SdkLibraryInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SdkLibraryInfo) })
 SdkLibraryDepInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SdkLibraryDepInSameApexChecker) })
 SdkLibraryImportDepIsInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SdkLibraryImportDepIsInSameApexChecker) })
}

func (r SdkLibraryComponentDependencyInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 val1 := r.OptionalSdkLibraryImplementation == nil
 if err = gobtools.EncodeBool(buf, val1); err != nil {
  return err
 }
 if !val1 {
  if err = gobtools.EncodeString(buf, (*r.OptionalSdkLibraryImplementation)); err != nil {
   return err
  }
 }

 val2 := r.SdkLibraryName == nil
 if err = gobtools.EncodeBool(buf, val2); err != nil {
  return err
 }
 if !val2 {
  if err = gobtools.EncodeString(buf, (*r.SdkLibraryName)); err != nil {
   return err
  }
 }
 return err
}

func (r SdkLibraryComponentDependencyInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.SdkLibraryComponentDependencyInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.*string")
 val1 := r.OptionalSdkLibraryImplementation == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  val2 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.OptionalSdkLibraryImplementation))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.OptionalSdkLibraryImplementation)), val2); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*string")
 val3 := r.SdkLibraryName == nil
 if val3 {
  hasher.WriteByte(0)
 } else {
  val4 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.SdkLibraryName))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.SdkLibraryName)), val4); err != nil {
   return err
  }
 }
 return nil
}

func (r *SdkLibraryComponentDependencyInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 bool
 if err = gobtools.DecodeBool(buf, &val2); err != nil {
  return err
 }
 if !val2 {
  var val1 string
  err = gobtools.DecodeString(buf, &val1)
  if err != nil {
   return err
  }
  r.OptionalSdkLibraryImplementation = &val1
 }

 var val5 bool
 if err = gobtools.DecodeBool(buf, &val5); err != nil {
  return err
 }
 if !val5 {
  var val4 string
  err = gobtools.DecodeString(buf, &val4)
  if err != nil {
   return err
  }
  r.SdkLibraryName = &val4
 }

 return err
}

var SdkLibraryComponentDependencyInfoGobRegId int16

func (r SdkLibraryComponentDependencyInfo) GetTypeId() int16 {
 return SdkLibraryComponentDependencyInfoGobRegId
}

func (r ApiScopePathsInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.StubsImplPath == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.StubsImplPath)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.StubsImplPath); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.StubsImplPath[val1]); err != nil {
    return err
   }
  }
 }

 if err = r.CurrentApiFilePath.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.RemovedApiFilePath.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.StubsSrcJar.Encode(ctx, buf); err != nil {
  return err
 }

 if err = r.AnnotationsZip.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r ApiScopePathsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ApiScopePathsInfo")
 hasher.WriteInt(5)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.StubsImplPath))
 for val1 := 0; val1 < len(r.StubsImplPath); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.StubsImplPath[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.StubsImplPath[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.StubsImplPath[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.StubsImplPath[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.StubsImplPath[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 if err := r.CurrentApiFilePath.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.RemovedApiFilePath.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.StubsSrcJar.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.AnnotationsZip.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *ApiScopePathsInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.StubsImplPath = make([]android.Path, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val6 == nil {
    r.StubsImplPath[val4] = nil
   } else {
    r.StubsImplPath[val4] = val6.(android.Path)
   }
  }
 }

 if err = r.CurrentApiFilePath.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.RemovedApiFilePath.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.StubsSrcJar.Decode(ctx, buf); err != nil {
  return err
 }

 if err = r.AnnotationsZip.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var ApiScopePathsInfoGobRegId int16

func (r ApiScopePathsInfo) GetTypeId() int16 {
 return ApiScopePathsInfoGobRegId
}

func (r ApiScopePropsInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 val1 := r.SdkVersion == nil
 if err = gobtools.EncodeBool(buf, val1); err != nil {
  return err
 }
 if !val1 {
  if err = gobtools.EncodeString(buf, (*r.SdkVersion)); err != nil {
   return err
  }
 }
 return err
}

func (r ApiScopePropsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.ApiScopePropsInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.*string")
 val1 := r.SdkVersion == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  val2 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.SdkVersion))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.SdkVersion)), val2); err != nil {
   return err
  }
 }
 return nil
}

func (r *ApiScopePropsInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 bool
 if err = gobtools.DecodeBool(buf, &val2); err != nil {
  return err
 }
 if !val2 {
  var val1 string
  err = gobtools.DecodeString(buf, &val1)
  if err != nil {
   return err
  }
  r.SdkVersion = &val1
 }

 return err
}

var ApiScopePropsInfoGobRegId int16

func (r ApiScopePropsInfo) GetTypeId() int16 {
 return ApiScopePropsInfoGobRegId
}

func (r SdkLibraryInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.GeneratingLibs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.GeneratingLibs)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.GeneratingLibs); val1++ {
   if err = gobtools.EncodeString(buf, r.GeneratingLibs[val1]); err != nil {
    return err
   }
  }
 }

 if r.EverythingStubDexJarPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.EverythingStubDexJarPaths)); err != nil {
   return err
  }
  for val2, val3 := range r.EverythingStubDexJarPaths {
   if err = gobtools.EncodeInt(buf, int(val2)); err != nil {
    return err
   }
   if err = val3.Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if r.ExportableStubDexJarPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ExportableStubDexJarPaths)); err != nil {
   return err
  }
  for val4, val5 := range r.ExportableStubDexJarPaths {
   if err = gobtools.EncodeInt(buf, int(val4)); err != nil {
    return err
   }
   if err = val5.Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if r.RemovedTxtFiles == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.RemovedTxtFiles)); err != nil {
   return err
  }
  for val6, val7 := range r.RemovedTxtFiles {
   if err = gobtools.EncodeInt(buf, int(val6)); err != nil {
    return err
   }
   if err = val7.Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeBool(buf, r.SharedLibrary); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.Prebuilt); err != nil {
  return err
 }

 if err = gobtools.EncodeString(buf, r.DistStem); err != nil {
  return err
 }

 if r.DoctagPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.DoctagPaths)); err != nil {
   return err
  }
  for val8 := 0; val8 < len(r.DoctagPaths); val8++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.DoctagPaths[val8]); err != nil {
    return err
   }
  }
 }

 val9 := r.OnBootclasspathSince == nil
 if err = gobtools.EncodeBool(buf, val9); err != nil {
  return err
 }
 if !val9 {
  if err = gobtools.EncodeString(buf, (*r.OnBootclasspathSince)); err != nil {
   return err
  }
 }

 val10 := r.OnBootclasspathBefore == nil
 if err = gobtools.EncodeBool(buf, val10); err != nil {
  return err
 }
 if !val10 {
  if err = gobtools.EncodeString(buf, (*r.OnBootclasspathBefore)); err != nil {
   return err
  }
 }

 val11 := r.MinDeviceSdk == nil
 if err = gobtools.EncodeBool(buf, val11); err != nil {
  return err
 }
 if !val11 {
  if err = gobtools.EncodeString(buf, (*r.MinDeviceSdk)); err != nil {
   return err
  }
 }

 val12 := r.MaxDeviceSdk == nil
 if err = gobtools.EncodeBool(buf, val12); err != nil {
  return err
 }
 if !val12 {
  if err = gobtools.EncodeString(buf, (*r.MaxDeviceSdk)); err != nil {
   return err
  }
 }

 if err = gobtools.EncodeBool(buf, r.ImplLibProfileGuided); err != nil {
  return err
 }

 if r.ApiScopePaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ApiScopePaths)); err != nil {
   return err
  }
  for val13, val14 := range r.ApiScopePaths {
   if err = gobtools.EncodeString(buf, val13); err != nil {
    return err
   }
   if err = val14.Encode(ctx, buf); err != nil {
    return err
   }
  }
 }

 if r.ApiScopeProps == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.ApiScopeProps)); err != nil {
   return err
  }
  for val15, val16 := range r.ApiScopeProps {
   if err = gobtools.EncodeString(buf, val15); err != nil {
    return err
   }
   if err = val16.Encode(ctx, buf); err != nil {
    return err
   }
  }
 }
 return err
}

func (r SdkLibraryInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.SdkLibraryInfo")
 hasher.WriteInt(15)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.GeneratingLibs))
 for val1 := 0; val1 < len(r.GeneratingLibs); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.GeneratingLibs[val1])
 }
 hasher.WriteString(":.map[android.SdkKind]OptionalDexJarPath")
 hasher.WriteInt(len(r.EverythingStubDexJarPaths))
 val2 := make([]android.SdkKind, 0, len(r.EverythingStubDexJarPaths))
 for val4 := range r.EverythingStubDexJarPaths {
  val2 = append(val2, val4)
 }
 proptools.SortOrdered(val2)
 for _, val3 := range val2 {
  hasher.WriteString(":java.android.SdkKind")
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(int(val3)))
  if err := r.EverythingStubDexJarPaths[val3].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":.map[android.SdkKind]OptionalDexJarPath")
 hasher.WriteInt(len(r.ExportableStubDexJarPaths))
 val5 := make([]android.SdkKind, 0, len(r.ExportableStubDexJarPaths))
 for val7 := range r.ExportableStubDexJarPaths {
  val5 = append(val5, val7)
 }
 proptools.SortOrdered(val5)
 for _, val6 := range val5 {
  hasher.WriteString(":java.android.SdkKind")
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(int(val6)))
  if err := r.ExportableStubDexJarPaths[val6].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":.map[android.SdkKind]android.OptionalPath")
 hasher.WriteInt(len(r.RemovedTxtFiles))
 val8 := make([]android.SdkKind, 0, len(r.RemovedTxtFiles))
 for val10 := range r.RemovedTxtFiles {
  val8 = append(val8, val10)
 }
 proptools.SortOrdered(val8)
 for _, val9 := range val8 {
  hasher.WriteString(":java.android.SdkKind")
  hasher.WriteString(":.int")
  hasher.WriteUint64(uint64(int(val9)))
  if err := r.RemovedTxtFiles[val9].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":.bool")
 if r.SharedLibrary {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Prebuilt {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.DistStem)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.DoctagPaths))
 for val11 := 0; val11 < len(r.DoctagPaths); val11++ {
  hasher.WriteString("android/soong/android:android.Path")
  val12 := r.DoctagPaths[val11] == nil
  if val12 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.DoctagPaths[val11]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val13 := r.DoctagPaths[val11] == nil
     if val13 {
      hasher.WriteByte(0)
     } else {
      val14 := func(hasher *proptools.Hasher) error {
       return r.DoctagPaths[val11].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val14); err != nil {
       return err
      }
     }
    }
   } else {
    r.DoctagPaths[val11].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.*string")
 val15 := r.OnBootclasspathSince == nil
 if val15 {
  hasher.WriteByte(0)
 } else {
  val16 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.OnBootclasspathSince))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.OnBootclasspathSince)), val16); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*string")
 val17 := r.OnBootclasspathBefore == nil
 if val17 {
  hasher.WriteByte(0)
 } else {
  val18 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.OnBootclasspathBefore))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.OnBootclasspathBefore)), val18); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*string")
 val19 := r.MinDeviceSdk == nil
 if val19 {
  hasher.WriteByte(0)
 } else {
  val20 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.MinDeviceSdk))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.MinDeviceSdk)), val20); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*string")
 val21 := r.MaxDeviceSdk == nil
 if val21 {
  hasher.WriteByte(0)
 } else {
  val22 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.MaxDeviceSdk))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.MaxDeviceSdk)), val22); err != nil {
   return err
  }
 }
 hasher.WriteString(":.bool")
 if r.ImplLibProfileGuided {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.map[string]ApiScopePathsInfo")
 hasher.WriteInt(len(r.ApiScopePaths))
 val23 := make([]string, 0, len(r.ApiScopePaths))
 for val25 := range r.ApiScopePaths {
  val23 = append(val23, val25)
 }
 proptools.SortOrdered(val23)
 for _, val24 := range val23 {
  hasher.WriteString(":.string")
  hasher.WriteString(val24)
  if err := r.ApiScopePaths[val24].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":.map[string]ApiScopePropsInfo")
 hasher.WriteInt(len(r.ApiScopeProps))
 val26 := make([]string, 0, len(r.ApiScopeProps))
 for val28 := range r.ApiScopeProps {
  val26 = append(val26, val28)
 }
 proptools.SortOrdered(val26)
 for _, val27 := range val26 {
  hasher.WriteString(":.string")
  hasher.WriteString(val27)
  if err := r.ApiScopeProps[val27].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *SdkLibraryInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.GeneratingLibs = make([]string, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   err = gobtools.DecodeString(buf, &r.GeneratingLibs[val3])
   if err != nil {
    return err
   }
  }
 }

 var val5 int
 err = gobtools.DecodeInt(buf, &val5)
 if err != nil {
  return err
 }
 if val5 != -1 {
  r.EverythingStubDexJarPaths = make(map[android.SdkKind]OptionalDexJarPath, val5)
  for val6 := 0; val6 < int(val5); val6++ {
   var val7 android.SdkKind
   var val8 OptionalDexJarPath
   var val10 int
   err = gobtools.DecodeInt(buf, &val10)
   if err != nil {
    return err
   }
   val7 = android.SdkKind(val10)
   if err = val8.Decode(ctx, buf); err != nil {
    return err
   }
   r.EverythingStubDexJarPaths[val7] = val8
  }
 }

 var val13 int
 err = gobtools.DecodeInt(buf, &val13)
 if err != nil {
  return err
 }
 if val13 != -1 {
  r.ExportableStubDexJarPaths = make(map[android.SdkKind]OptionalDexJarPath, val13)
  for val14 := 0; val14 < int(val13); val14++ {
   var val15 android.SdkKind
   var val16 OptionalDexJarPath
   var val18 int
   err = gobtools.DecodeInt(buf, &val18)
   if err != nil {
    return err
   }
   val15 = android.SdkKind(val18)
   if err = val16.Decode(ctx, buf); err != nil {
    return err
   }
   r.ExportableStubDexJarPaths[val15] = val16
  }
 }

 var val21 int
 err = gobtools.DecodeInt(buf, &val21)
 if err != nil {
  return err
 }
 if val21 != -1 {
  r.RemovedTxtFiles = make(map[android.SdkKind]android.OptionalPath, val21)
  for val22 := 0; val22 < int(val21); val22++ {
   var val23 android.SdkKind
   var val24 android.OptionalPath
   var val26 int
   err = gobtools.DecodeInt(buf, &val26)
   if err != nil {
    return err
   }
   val23 = android.SdkKind(val26)
   if err = val24.Decode(ctx, buf); err != nil {
    return err
   }
   r.RemovedTxtFiles[val23] = val24
  }
 }

 err = gobtools.DecodeBool(buf, &r.SharedLibrary)
 if err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.Prebuilt)
 if err != nil {
  return err
 }

 err = gobtools.DecodeString(buf, &r.DistStem)
 if err != nil {
  return err
 }

 var val34 int
 err = gobtools.DecodeInt(buf, &val34)
 if err != nil {
  return err
 }
 if val34 != -1 {
  r.DoctagPaths = make([]android.Path, val34)
  for val35 := 0; val35 < int(val34); val35++ {
   if val37, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val37 == nil {
    r.DoctagPaths[val35] = nil
   } else {
    r.DoctagPaths[val35] = val37.(android.Path)
   }
  }
 }

 var val39 bool
 if err = gobtools.DecodeBool(buf, &val39); err != nil {
  return err
 }
 if !val39 {
  var val38 string
  err = gobtools.DecodeString(buf, &val38)
  if err != nil {
   return err
  }
  r.OnBootclasspathSince = &val38
 }

 var val42 bool
 if err = gobtools.DecodeBool(buf, &val42); err != nil {
  return err
 }
 if !val42 {
  var val41 string
  err = gobtools.DecodeString(buf, &val41)
  if err != nil {
   return err
  }
  r.OnBootclasspathBefore = &val41
 }

 var val45 bool
 if err = gobtools.DecodeBool(buf, &val45); err != nil {
  return err
 }
 if !val45 {
  var val44 string
  err = gobtools.DecodeString(buf, &val44)
  if err != nil {
   return err
  }
  r.MinDeviceSdk = &val44
 }

 var val48 bool
 if err = gobtools.DecodeBool(buf, &val48); err != nil {
  return err
 }
 if !val48 {
  var val47 string
  err = gobtools.DecodeString(buf, &val47)
  if err != nil {
   return err
  }
  r.MaxDeviceSdk = &val47
 }

 err = gobtools.DecodeBool(buf, &r.ImplLibProfileGuided)
 if err != nil {
  return err
 }

 var val51 int
 err = gobtools.DecodeInt(buf, &val51)
 if err != nil {
  return err
 }
 if val51 != -1 {
  r.ApiScopePaths = make(map[string]ApiScopePathsInfo, val51)
  for val52 := 0; val52 < int(val51); val52++ {
   var val53 string
   var val54 ApiScopePathsInfo
   err = gobtools.DecodeString(buf, &val53)
   if err != nil {
    return err
   }
   if err = val54.Decode(ctx, buf); err != nil {
    return err
   }
   r.ApiScopePaths[val53] = val54
  }
 }

 var val57 int
 err = gobtools.DecodeInt(buf, &val57)
 if err != nil {
  return err
 }
 if val57 != -1 {
  r.ApiScopeProps = make(map[string]ApiScopePropsInfo, val57)
  for val58 := 0; val58 < int(val57); val58++ {
   var val59 string
   var val60 ApiScopePropsInfo
   err = gobtools.DecodeString(buf, &val59)
   if err != nil {
    return err
   }
   if err = val60.Decode(ctx, buf); err != nil {
    return err
   }
   r.ApiScopeProps[val59] = val60
  }
 }

 return err
}

var SdkLibraryInfoGobRegId int16

func (r SdkLibraryInfo) GetTypeId() int16 {
 return SdkLibraryInfoGobRegId
}

func (r SdkLibraryDepInSameApexChecker) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r SdkLibraryDepInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.SdkLibraryDepInSameApexChecker")
 hasher.WriteInt(1)
 if err := r.BaseDepInSameApexChecker.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *SdkLibraryDepInSameApexChecker) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var SdkLibraryDepInSameApexCheckerGobRegId int16

func (r SdkLibraryDepInSameApexChecker) GetTypeId() int16 {
 return SdkLibraryDepInSameApexCheckerGobRegId
}

func (r SdkLibraryImportDepIsInSameApexChecker) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Encode(ctx, buf); err != nil {
  return err
 }
 return err
}

func (r SdkLibraryImportDepIsInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.SdkLibraryImportDepIsInSameApexChecker")
 hasher.WriteInt(1)
 if err := r.BaseDepInSameApexChecker.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

func (r *SdkLibraryImportDepIsInSameApexChecker) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 if err = r.BaseDepInSameApexChecker.Decode(ctx, buf); err != nil {
  return err
 }

 return err
}

var SdkLibraryImportDepIsInSameApexCheckerGobRegId int16

func (r SdkLibraryImportDepIsInSameApexChecker) GetTypeId() int16 {
 return SdkLibraryImportDepIsInSameApexCheckerGobRegId
}

// end of sdk_library.go

// begin of system_modules.go
func init() {
 SystemModulesProviderInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SystemModulesProviderInfo) })
}

func (r SystemModulesProviderInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.HeaderJars == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.HeaderJars)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.HeaderJars); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.HeaderJars[val1]); err != nil {
    return err
   }
  }
 }

 if err = gobtools.EncodeInterface(ctx, buf, r.OutputDir); err != nil {
  return err
 }

 if r.OutputDirDeps == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.OutputDirDeps)); err != nil {
   return err
  }
  for val2 := 0; val2 < len(r.OutputDirDeps); val2++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.OutputDirDeps[val2]); err != nil {
    return err
   }
  }
 }

 if err = r.TransitiveStaticLibsHeaderJars.EncodeInterface(ctx, buf); err != nil {
  return err
 }

 if err = gobtools.EncodeBool(buf, r.Prebuilt); err != nil {
  return err
 }

 if r.Libs == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.Libs)); err != nil {
   return err
  }
  for val3 := 0; val3 < len(r.Libs); val3++ {
   if err = gobtools.EncodeString(buf, r.Libs[val3]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r SystemModulesProviderInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.SystemModulesProviderInfo")
 hasher.WriteInt(6)
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.HeaderJars))
 for val1 := 0; val1 < len(r.HeaderJars); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.HeaderJars[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.HeaderJars[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.HeaderJars[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.HeaderJars[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.HeaderJars[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":java.android.Path")
 val5 := r.OutputDir == nil
 if val5 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.OutputDir); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val6 := r.OutputDir == nil
    if val6 {
     hasher.WriteByte(0)
    } else {
     val7 := func(hasher *proptools.Hasher) error { return r.OutputDir.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
      return err
     }
    }
   }
  } else {
   r.OutputDir.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":java.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.OutputDirDeps))
 for val8 := 0; val8 < len(r.OutputDirDeps); val8++ {
  hasher.WriteString("android/soong/android:android.Path")
  val9 := r.OutputDirDeps[val8] == nil
  if val9 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.OutputDirDeps[val8]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val10 := r.OutputDirDeps[val8] == nil
     if val10 {
      hasher.WriteByte(0)
     } else {
      val11 := func(hasher *proptools.Hasher) error {
       return r.OutputDirDeps[val8].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val11); err != nil {
       return err
      }
     }
    }
   } else {
    r.OutputDirDeps[val8].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 val16 := func(hasher *proptools.Hasher, val12 android.Path) error {
  hasher.WriteString(":java.android.Path")
  val13 := val12 == nil
  if val13 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(val12); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val14 := val12 == nil
     if val14 {
      hasher.WriteByte(0)
     } else {
      val15 := func(hasher *proptools.Hasher) error { return val12.(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val15); err != nil {
       return err
      }
     }
    }
   } else {
    val12.(proptools.CustomHash).CustomHash(hasher)
   }
  }
  return nil
 }
 if err := r.TransitiveStaticLibsHeaderJars.Hash(hasher, "android.Path", val16); err != nil {
  return err
 }
 hasher.WriteString(":.bool")
 if r.Prebuilt {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Libs))
 for val17 := 0; val17 < len(r.Libs); val17++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Libs[val17])
 }
 return nil
}

func (r *SystemModulesProviderInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val3 int
 err = gobtools.DecodeInt(buf, &val3)
 if err != nil {
  return err
 }
 if val3 != -1 {
  r.HeaderJars = make([]android.Path, val3)
  for val4 := 0; val4 < int(val3); val4++ {
   if val6, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val6 == nil {
    r.HeaderJars[val4] = nil
   } else {
    r.HeaderJars[val4] = val6.(android.Path)
   }
  }
 }

 if val8, err := gobtools.DecodeInterface(ctx, buf); err != nil {
  return err
 } else if val8 == nil {
  r.OutputDir = nil
 } else {
  r.OutputDir = val8.(android.Path)
 }

 var val11 int
 err = gobtools.DecodeInt(buf, &val11)
 if err != nil {
  return err
 }
 if val11 != -1 {
  r.OutputDirDeps = make([]android.Path, val11)
  for val12 := 0; val12 < int(val11); val12++ {
   if val14, err := gobtools.DecodeInterface(ctx, buf); err != nil {
    return err
   } else if val14 == nil {
    r.OutputDirDeps[val12] = nil
   } else {
    r.OutputDirDeps[val12] = val14.(android.Path)
   }
  }
 }

 if err = r.TransitiveStaticLibsHeaderJars.DecodeInterface(ctx, buf); err != nil {
  return err
 }

 err = gobtools.DecodeBool(buf, &r.Prebuilt)
 if err != nil {
  return err
 }

 var val18 int
 err = gobtools.DecodeInt(buf, &val18)
 if err != nil {
  return err
 }
 if val18 != -1 {
  r.Libs = make([]string, val18)
  for val19 := 0; val19 < int(val18); val19++ {
   err = gobtools.DecodeString(buf, &r.Libs[val19])
   if err != nil {
    return err
   }
  }
 }

 return err
}

var SystemModulesProviderInfoGobRegId int16

func (r SystemModulesProviderInfo) GetTypeId() int16 {
 return SystemModulesProviderInfoGobRegId
}

// end of system_modules.go

// begin of systemserver_classpath_fragment.go
func init() {
 SystemServerClasspathInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SystemServerClasspathInfo) })
 LibraryNameToPartitionInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(LibraryNameToPartitionInfo) })
}

func (r SystemServerClasspathInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.Contents == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.Contents)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.Contents); val1++ {
   if err = gobtools.EncodeString(buf, r.Contents[val1]); err != nil {
    return err
   }
  }
 }

 if r.StandaloneContents == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.StandaloneContents)); err != nil {
   return err
  }
  for val2 := 0; val2 < len(r.StandaloneContents); val2++ {
   if err = gobtools.EncodeString(buf, r.StandaloneContents[val2]); err != nil {
    return err
   }
  }
 }
 return err
}

func (r SystemServerClasspathInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.SystemServerClasspathInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Contents))
 for val1 := 0; val1 < len(r.Contents); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Contents[val1])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.StandaloneContents))
 for val2 := 0; val2 < len(r.StandaloneContents); val2++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.StandaloneContents[val2])
 }
 return nil
}

func (r *SystemServerClasspathInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val2 int
 err = gobtools.DecodeInt(buf, &val2)
 if err != nil {
  return err
 }
 if val2 != -1 {
  r.Contents = make([]string, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   err = gobtools.DecodeString(buf, &r.Contents[val3])
   if err != nil {
    return err
   }
  }
 }

 var val6 int
 err = gobtools.DecodeInt(buf, &val6)
 if err != nil {
  return err
 }
 if val6 != -1 {
  r.StandaloneContents = make([]string, val6)
  for val7 := 0; val7 < int(val6); val7++ {
   err = gobtools.DecodeString(buf, &r.StandaloneContents[val7])
   if err != nil {
    return err
   }
  }
 }

 return err
}

var SystemServerClasspathInfoGobRegId int16

func (r SystemServerClasspathInfo) GetTypeId() int16 {
 return SystemServerClasspathInfoGobRegId
}

func (r LibraryNameToPartitionInfo) Encode(ctx gobtools.EncContext, buf *bytes.Buffer) error {
 var err error

 if r.LibraryNameToPartition == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.LibraryNameToPartition)); err != nil {
   return err
  }
  for val1, val2 := range r.LibraryNameToPartition {
   if err = gobtools.EncodeString(buf, val1); err != nil {
    return err
   }
   if err = gobtools.EncodeString(buf, val2); err != nil {
    return err
   }
  }
 }
 return err
}

func (r LibraryNameToPartitionInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":java.LibraryNameToPartitionInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.map[string]string")
 hasher.WriteInt(len(r.LibraryNameToPartition))
 val1 := make([]string, 0, len(r.LibraryNameToPartition))
 for val3 := range r.LibraryNameToPartition {
  val1 = append(val1, val3)
 }
 proptools.SortOrdered(val1)
 for _, val2 := range val1 {
  hasher.WriteString(":.string")
  hasher.WriteString(val2)
  hasher.WriteString(":.string")
  hasher.WriteString(r.LibraryNameToPartition[val2])
 }
 return nil
}

func (r *LibraryNameToPartitionInfo) Decode(ctx gobtools.EncContext, buf *bytes.Reader) error {
 var err error

 var val1 int
 err = gobtools.DecodeInt(buf, &val1)
 if err != nil {
  return err
 }
 if val1 != -1 {
  r.LibraryNameToPartition = make(map[string]string, val1)
  for val2 := 0; val2 < int(val1); val2++ {
   var val3 string
   var val4 string
   err = gobtools.DecodeString(buf, &val3)
   if err != nil {
    return err
   }
   err = gobtools.DecodeString(buf, &val4)
   if err != nil {
    return err
   }
   r.LibraryNameToPartition[val3] = val4
  }
 }

 return err
}

var LibraryNameToPartitionInfoGobRegId int16

func (r LibraryNameToPartitionInfo) GetTypeId() int16 {
 return LibraryNameToPartitionInfoGobRegId
}

// end of systemserver_classpath_fragment.go

[Dauer der Verarbeitung: 0.320 Sekunden, vorverarbeitet 2026-06-28]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik