Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Android/build/build/soong/cc/   (Android Betriebssystem Version 17©)  Datei vom 26.5.2026 mit Größe 175 kB image not shown  

Impressum cc_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 cc

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

// begin of binary_sdk_member.go
func init() {
 binarySdkMemberTypeGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(binarySdkMemberType) })
}

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

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

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

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

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

 return err
}

var binarySdkMemberTypeGobRegId int16

func (r binarySdkMemberType) GetTypeId() int16 {
 return binarySdkMemberTypeGobRegId
}

// end of binary_sdk_member.go

// begin of builder.go
func init() {
 ObjectsGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(Objects) })
 KytheFilePairGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(KytheFilePair) })
}

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

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

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

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

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

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

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

func (r Objects) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.Objects")
 hasher.WriteInt(6)
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.objFiles))
 for val1 := 0; val1 < len(r.objFiles); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.objFiles[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.objFiles[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.objFiles[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.objFiles[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.objFiles[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.tidyFiles))
 for val5 := 0; val5 < len(r.tidyFiles); val5++ {
  hasher.WriteString("android/soong/android:android.Path")
  val6 := r.tidyFiles[val5] == nil
  if val6 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.tidyFiles[val5]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val7 := r.tidyFiles[val5] == nil
     if val7 {
      hasher.WriteByte(0)
     } else {
      val8 := func(hasher *proptools.Hasher) error {
       return r.tidyFiles[val5].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val8); err != nil {
       return err
      }
     }
    }
   } else {
    r.tidyFiles[val5].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.tidyDepFiles))
 for val9 := 0; val9 < len(r.tidyDepFiles); val9++ {
  hasher.WriteString("android/soong/android:android.Path")
  val10 := r.tidyDepFiles[val9] == nil
  if val10 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.tidyDepFiles[val9]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val11 := r.tidyDepFiles[val9] == nil
     if val11 {
      hasher.WriteByte(0)
     } else {
      val12 := func(hasher *proptools.Hasher) error {
       return r.tidyDepFiles[val9].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val12); err != nil {
       return err
      }
     }
    }
   } else {
    r.tidyDepFiles[val9].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.coverageFiles))
 for val13 := 0; val13 < len(r.coverageFiles); val13++ {
  hasher.WriteString("android/soong/android:android.Path")
  val14 := r.coverageFiles[val13] == nil
  if val14 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.coverageFiles[val13]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val15 := r.coverageFiles[val13] == nil
     if val15 {
      hasher.WriteByte(0)
     } else {
      val16 := func(hasher *proptools.Hasher) error {
       return r.coverageFiles[val13].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val16); err != nil {
       return err
      }
     }
    }
   } else {
    r.coverageFiles[val13].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.sAbiDumpFiles))
 for val17 := 0; val17 < len(r.sAbiDumpFiles); val17++ {
  hasher.WriteString("android/soong/android:android.Path")
  val18 := r.sAbiDumpFiles[val17] == nil
  if val18 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.sAbiDumpFiles[val17]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val19 := r.sAbiDumpFiles[val17] == nil
     if val19 {
      hasher.WriteByte(0)
     } else {
      val20 := func(hasher *proptools.Hasher) error {
       return r.sAbiDumpFiles[val17].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val20); err != nil {
       return err
      }
     }
    }
   } else {
    r.sAbiDumpFiles[val17].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":cc.KytheFilePairs")
 hasher.WriteString(":.[]KytheFilePair")
 hasher.WriteInt(len(r.kytheFiles))
 for val21 := 0; val21 < len(r.kytheFiles); val21++ {
  if err := r.kytheFiles[val21].CustomHash(hasher); err != nil {
   return err
  }
 }
 return nil
}

func (r *Objects) 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.objFiles = 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.objFiles[val4] = nil
   } else {
    r.objFiles[val4] = val6.(android.Path)
   }
  }
 }

 var val9 int
 err = gobtools.DecodeInt(buf, &val9)
 if err != nil {
  return err
 }
 if val9 != -1 {
  r.tidyFiles = 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.tidyFiles[val10] = nil
   } else {
    r.tidyFiles[val10] = val12.(android.Path)
   }
  }
 }

 var val15 int
 err = gobtools.DecodeInt(buf, &val15)
 if err != nil {
  return err
 }
 if val15 != -1 {
  r.tidyDepFiles = 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.tidyDepFiles[val16] = nil
   } else {
    r.tidyDepFiles[val16] = val18.(android.Path)
   }
  }
 }

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

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

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

 return err
}

var ObjectsGobRegId int16

func (r Objects) GetTypeId() int16 {
 return ObjectsGobRegId
}

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

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

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

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

func (r *KytheFilePair) 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.SrcFile = nil
 } else {
  r.SrcFile = val2.(android.Path)
 }

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

 return err
}

var KytheFilePairGobRegId int16

func (r KytheFilePair) GetTypeId() int16 {
 return KytheFilePairGobRegId
}

// end of builder.go

// begin of cc.go
func init() {
 CcMakeVarsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(CcMakeVarsInfo) })
 CcObjectInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(CcObjectInfo) })
 AidlInterfaceInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(AidlInterfaceInfo) })
 CompilerInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(CompilerInfo) })
 LinkerInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(LinkerInfo) })
 BinaryDecoratorInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(BinaryDecoratorInfo) })
 LibraryDecoratorInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(LibraryDecoratorInfo) })
 SnapshotInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SnapshotInfo) })
 TestBinaryInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(TestBinaryInfo) })
 BenchmarkDecoratorInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(BenchmarkDecoratorInfo) })
 StubDecoratorInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(StubDecoratorInfo) })
 ObjectLinkerInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ObjectLinkerInfo) })
 PrebuiltLibraryLinkerInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(PrebuiltLibraryLinkerInfo) })
 LibraryInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(LibraryInfo) })
 InstallerInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(InstallerInfo) })
 LocalOrGlobalFlagsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(LocalOrGlobalFlagsInfo) })
 SanitizeInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SanitizeInfo) })
 StlInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(StlInfo) })
 CcInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(CcInfo) })
 LinkableInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(LinkableInfo) })
 InstallPairGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(InstallPair) })
 RustRlibDepGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(RustRlibDep) })
 CcDepInSameApexCheckerGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(CcDepInSameApexChecker) })
}

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

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

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

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

func (r CcMakeVarsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.CcMakeVarsInfo")
 hasher.WriteInt(3)
 hasher.WriteString(":.string")
 hasher.WriteString(r.WarningsAllowed)
 hasher.WriteString(":.string")
 hasher.WriteString(r.UsingWnoError)
 hasher.WriteString(":.string")
 hasher.WriteString(r.MissingProfile)
 return nil
}

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

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

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

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

 return err
}

var CcMakeVarsInfoGobRegId int16

func (r CcMakeVarsInfo) GetTypeId() int16 {
 return CcMakeVarsInfoGobRegId
}

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

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

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

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

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

func (r *CcObjectInfo) 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.ObjFiles = 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.ObjFiles[val4] = nil
   } else {
    r.ObjFiles[val4] = val6.(android.Path)
   }
  }
 }

 var val9 int
 err = gobtools.DecodeInt(buf, &val9)
 if err != nil {
  return err
 }
 if val9 != -1 {
  r.TidyFiles = 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.TidyFiles[val10] = nil
   } else {
    r.TidyFiles[val10] = val12.(android.Path)
   }
  }
 }

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

 return err
}

var CcObjectInfoGobRegId int16

func (r CcObjectInfo) GetTypeId() int16 {
 return CcObjectInfoGobRegId
}

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

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

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

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

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

func (r AidlInterfaceInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.AidlInterfaceInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Sources))
 for val1 := 0; val1 < len(r.Sources); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Sources[val1])
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.AidlRoot)
 hasher.WriteString(":.string")
 hasher.WriteString(r.Lang)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Flags))
 for val2 := 0; val2 < len(r.Flags); val2++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Flags[val2])
 }
 return nil
}

func (r *AidlInterfaceInfo) 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.Sources = make([]string, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   err = gobtools.DecodeString(buf, &r.Sources[val3])
   if err != nil {
    return err
   }
  }
 }

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

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

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

 return err
}

var AidlInterfaceInfoGobRegId int16

func (r AidlInterfaceInfo) GetTypeId() int16 {
 return AidlInterfaceInfoGobRegId
}

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

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

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

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

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

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

func (r *CompilerInfo) 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.Srcs = 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.Srcs[val4] = nil
   } else {
    r.Srcs[val4] = val6.(android.Path)
   }
  }
 }

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

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

 var val13 bool
 if err = gobtools.DecodeBool(buf, &val13); err != nil {
  return err
 }
 if !val13 {
  var val12 LibraryDecoratorInfo
  if err = val12.Decode(ctx, buf); err != nil {
   return err
  }
  r.LibraryDecoratorInfo = &val12
 }

 return err
}

var CompilerInfoGobRegId int16

func (r CompilerInfo) GetTypeId() int16 {
 return CompilerInfoGobRegId
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

func (r LinkerInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.LinkerInfo")
 hasher.WriteInt(13)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.WholeStaticLibs))
 for val1 := 0; val1 < len(r.WholeStaticLibs); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.WholeStaticLibs[val1])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.StaticLibs))
 for val2 := 0; val2 < len(r.StaticLibs); val2++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.StaticLibs[val2])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SharedLibs))
 for val3 := 0; val3 < len(r.SharedLibs); val3++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SharedLibs[val3])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.HeaderLibs))
 for val4 := 0; val4 < len(r.HeaderLibs); val4++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.HeaderLibs[val4])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SystemSharedLibs))
 for val5 := 0; val5 < len(r.SystemSharedLibs); val5++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SystemSharedLibs[val5])
 }
 hasher.WriteString(":.*string")
 val6 := r.ImplementationModuleName == nil
 if val6 {
  hasher.WriteByte(0)
 } else {
  val7 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.ImplementationModuleName))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ImplementationModuleName)), val7); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*BinaryDecoratorInfo")
 val8 := r.BinaryDecoratorInfo == nil
 if val8 {
  hasher.WriteByte(0)
 } else {
  val9 := func(hasher *proptools.Hasher) error {
   if err := (*r.BinaryDecoratorInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.BinaryDecoratorInfo)), val9); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*LibraryDecoratorInfo")
 val10 := r.LibraryDecoratorInfo == nil
 if val10 {
  hasher.WriteByte(0)
 } else {
  val11 := func(hasher *proptools.Hasher) error {
   if err := (*r.LibraryDecoratorInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.LibraryDecoratorInfo)), val11); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*TestBinaryInfo")
 val12 := r.TestBinaryInfo == nil
 if val12 {
  hasher.WriteByte(0)
 } else {
  val13 := func(hasher *proptools.Hasher) error {
   if err := (*r.TestBinaryInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.TestBinaryInfo)), val13); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*BenchmarkDecoratorInfo")
 val14 := r.BenchmarkDecoratorInfo == nil
 if val14 {
  hasher.WriteByte(0)
 } else {
  val15 := func(hasher *proptools.Hasher) error {
   if err := (*r.BenchmarkDecoratorInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.BenchmarkDecoratorInfo)), val15); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*ObjectLinkerInfo")
 val16 := r.ObjectLinkerInfo == nil
 if val16 {
  hasher.WriteByte(0)
 } else {
  val17 := func(hasher *proptools.Hasher) error {
   if err := (*r.ObjectLinkerInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.ObjectLinkerInfo)), val17); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*StubDecoratorInfo")
 val18 := r.StubDecoratorInfo == nil
 if val18 {
  hasher.WriteByte(0)
 } else {
  val19 := func(hasher *proptools.Hasher) error {
   if err := (*r.StubDecoratorInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.StubDecoratorInfo)), val19); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*PrebuiltLibraryLinkerInfo")
 val20 := r.PrebuiltLibraryLinkerInfo == nil
 if val20 {
  hasher.WriteByte(0)
 } else {
  val21 := func(hasher *proptools.Hasher) error {
   if err := (*r.PrebuiltLibraryLinkerInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.PrebuiltLibraryLinkerInfo)), val21); err != nil {
   return err
  }
 }
 return nil
}

func (r *LinkerInfo) 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.WholeStaticLibs = make([]string, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   err = gobtools.DecodeString(buf, &r.WholeStaticLibs[val3])
   if err != nil {
    return err
   }
  }
 }

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

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

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

 var val18 int
 err = gobtools.DecodeInt(buf, &val18)
 if err != nil {
  return err
 }
 if val18 != -1 {
  r.SystemSharedLibs = make([]string, val18)
  for val19 := 0; val19 < int(val18); val19++ {
   err = gobtools.DecodeString(buf, &r.SystemSharedLibs[val19])
   if 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.ImplementationModuleName = &val21
 }

 var val25 bool
 if err = gobtools.DecodeBool(buf, &val25); err != nil {
  return err
 }
 if !val25 {
  var val24 BinaryDecoratorInfo
  if err = val24.Decode(ctx, buf); err != nil {
   return err
  }
  r.BinaryDecoratorInfo = &val24
 }

 var val28 bool
 if err = gobtools.DecodeBool(buf, &val28); err != nil {
  return err
 }
 if !val28 {
  var val27 LibraryDecoratorInfo
  if err = val27.Decode(ctx, buf); err != nil {
   return err
  }
  r.LibraryDecoratorInfo = &val27
 }

 var val31 bool
 if err = gobtools.DecodeBool(buf, &val31); err != nil {
  return err
 }
 if !val31 {
  var val30 TestBinaryInfo
  if err = val30.Decode(ctx, buf); err != nil {
   return err
  }
  r.TestBinaryInfo = &val30
 }

 var val34 bool
 if err = gobtools.DecodeBool(buf, &val34); err != nil {
  return err
 }
 if !val34 {
  var val33 BenchmarkDecoratorInfo
  if err = val33.Decode(ctx, buf); err != nil {
   return err
  }
  r.BenchmarkDecoratorInfo = &val33
 }

 var val37 bool
 if err = gobtools.DecodeBool(buf, &val37); err != nil {
  return err
 }
 if !val37 {
  var val36 ObjectLinkerInfo
  if err = val36.Decode(ctx, buf); err != nil {
   return err
  }
  r.ObjectLinkerInfo = &val36
 }

 var val40 bool
 if err = gobtools.DecodeBool(buf, &val40); err != nil {
  return err
 }
 if !val40 {
  var val39 StubDecoratorInfo
  if err = val39.Decode(ctx, buf); err != nil {
   return err
  }
  r.StubDecoratorInfo = &val39
 }

 var val43 bool
 if err = gobtools.DecodeBool(buf, &val43); err != nil {
  return err
 }
 if !val43 {
  var val42 PrebuiltLibraryLinkerInfo
  if err = val42.Decode(ctx, buf); err != nil {
   return err
  }
  r.PrebuiltLibraryLinkerInfo = &val42
 }

 return err
}

var LinkerInfoGobRegId int16

func (r LinkerInfo) GetTypeId() int16 {
 return LinkerInfoGobRegId
}

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

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

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

func (r BinaryDecoratorInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.BinaryDecoratorInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.bool")
 if r.StaticExecutable {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Nocrt {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

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

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

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

 return err
}

var BinaryDecoratorInfoGobRegId int16

func (r BinaryDecoratorInfo) GetTypeId() int16 {
 return BinaryDecoratorInfoGobRegId
}

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

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

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

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

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

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

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

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

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

func (r LibraryDecoratorInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.LibraryDecoratorInfo")
 hasher.WriteInt(8)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.ExportIncludeDirs))
 for val1 := 0; val1 < len(r.ExportIncludeDirs); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.ExportIncludeDirs[val1])
 }
 hasher.WriteString(":.bool")
 if r.InjectBsslHash {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":cc.android.Path")
 val2 := r.NdkSysrootPath == nil
 if val2 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.NdkSysrootPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val3 := r.NdkSysrootPath == nil
    if val3 {
     hasher.WriteByte(0)
    } else {
     val4 := func(hasher *proptools.Hasher) error {
      return r.NdkSysrootPath.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
      return err
     }
    }
   }
  } else {
   r.NdkSysrootPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.VndkFileName)
 hasher.WriteString(":.*bool")
 val5 := r.UniqueHostSoname == nil
 if val5 {
  hasher.WriteByte(0)
 } else {
  val6 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.UniqueHostSoname {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.UniqueHostSoname)), val6); err != nil {
   return err
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SharedLibs))
 for val7 := 0; val7 < len(r.SharedLibs); val7++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SharedLibs[val7])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SystemSharedLibs))
 for val8 := 0; val8 < len(r.SystemSharedLibs); val8++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SystemSharedLibs[val8])
 }
 hasher.WriteString(":cc.android.Path")
 val9 := r.StubsSymbolFilePath == nil
 if val9 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.StubsSymbolFilePath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val10 := r.StubsSymbolFilePath == nil
    if val10 {
     hasher.WriteByte(0)
    } else {
     val11 := func(hasher *proptools.Hasher) error {
      return r.StubsSymbolFilePath.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val11); err != nil {
      return err
     }
    }
   }
  } else {
   r.StubsSymbolFilePath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 return nil
}

func (r *LibraryDecoratorInfo) 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.ExportIncludeDirs = make([]string, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   err = gobtools.DecodeString(buf, &r.ExportIncludeDirs[val3])
   if err != nil {
    return err
   }
  }
 }

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

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

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

 var val10 bool
 if err = gobtools.DecodeBool(buf, &val10); err != nil {
  return err
 }
 if !val10 {
  var val9 bool
  err = gobtools.DecodeBool(buf, &val9)
  if err != nil {
   return err
  }
  r.UniqueHostSoname = &val9
 }

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

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

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

 return err
}

var LibraryDecoratorInfoGobRegId int16

func (r LibraryDecoratorInfo) GetTypeId() int16 {
 return LibraryDecoratorInfoGobRegId
}

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

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

func (r SnapshotInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.SnapshotInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.string")
 hasher.WriteString(r.SnapshotAndroidMkSuffix)
 return nil
}

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

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

 return err
}

var SnapshotInfoGobRegId int16

func (r SnapshotInfo) GetTypeId() int16 {
 return SnapshotInfoGobRegId
}

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

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

func (r TestBinaryInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.TestBinaryInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.bool")
 if r.Gtest {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

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

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

 return err
}

var TestBinaryInfoGobRegId int16

func (r TestBinaryInfo) GetTypeId() int16 {
 return TestBinaryInfoGobRegId
}

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

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

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

 return err
}

var BenchmarkDecoratorInfoGobRegId int16

func (r BenchmarkDecoratorInfo) GetTypeId() int16 {
 return BenchmarkDecoratorInfoGobRegId
}

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

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

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

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

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

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

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

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

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

 var val5 int
 err = gobtools.DecodeInt(buf, &val5)
 if err != nil {
  return err
 }
 if val5 != -1 {
  r.AbiDiffPaths = 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.AbiDiffPaths[val6] = nil
   } else {
    r.AbiDiffPaths[val6] = val8.(android.Path)
   }
  }
 }

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

 return err
}

var StubDecoratorInfoGobRegId int16

func (r StubDecoratorInfo) GetTypeId() int16 {
 return StubDecoratorInfoGobRegId
}

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

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

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

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

func (r ObjectLinkerInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.ObjectLinkerInfo")
 hasher.WriteInt(3)
 hasher.WriteString(":cc.android.Path")
 val1 := r.NdkSysrootPath == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.NdkSysrootPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.NdkSysrootPath == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.NdkSysrootPath.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.NdkSysrootPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SharedLibs))
 for val4 := 0; val4 < len(r.SharedLibs); val4++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SharedLibs[val4])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SystemSharedLibs))
 for val5 := 0; val5 < len(r.SystemSharedLibs); val5++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SystemSharedLibs[val5])
 }
 return nil
}

func (r *ObjectLinkerInfo) 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.NdkSysrootPath = nil
 } else {
  r.NdkSysrootPath = val2.(android.Path)
 }

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

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

 return err
}

var ObjectLinkerInfoGobRegId int16

func (r ObjectLinkerInfo) GetTypeId() int16 {
 return ObjectLinkerInfoGobRegId
}

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

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

func (r PrebuiltLibraryLinkerInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.PrebuiltLibraryLinkerInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.string")
 hasher.WriteString(r.VndkFileName)
 return nil
}

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

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

 return err
}

var PrebuiltLibraryLinkerInfoGobRegId int16

func (r PrebuiltLibraryLinkerInfo) GetTypeId() int16 {
 return PrebuiltLibraryLinkerInfoGobRegId
}

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

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

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

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

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

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

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

 return err
}

var LibraryInfoGobRegId int16

func (r LibraryInfo) GetTypeId() int16 {
 return LibraryInfoGobRegId
}

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

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

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

func (r *InstallerInfo) 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 StubDecoratorInfo
  if err = val1.Decode(ctx, buf); err != nil {
   return err
  }
  r.StubDecoratorInfo = &val1
 }

 return err
}

var InstallerInfoGobRegId int16

func (r InstallerInfo) GetTypeId() int16 {
 return InstallerInfoGobRegId
}

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

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

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

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

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

func (r LocalOrGlobalFlagsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.LocalOrGlobalFlagsInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.CommonFlags))
 for val1 := 0; val1 < len(r.CommonFlags); val1++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.CommonFlags[val1])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.CFlags))
 for val2 := 0; val2 < len(r.CFlags); val2++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.CFlags[val2])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.ConlyFlags))
 for val3 := 0; val3 < len(r.ConlyFlags); val3++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.ConlyFlags[val3])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.CppFlags))
 for val4 := 0; val4 < len(r.CppFlags); val4++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.CppFlags[val4])
 }
 return nil
}

func (r *LocalOrGlobalFlagsInfo) 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.CommonFlags = make([]string, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   err = gobtools.DecodeString(buf, &r.CommonFlags[val3])
   if err != nil {
    return err
   }
  }
 }

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

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

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

 return err
}

var LocalOrGlobalFlagsInfoGobRegId int16

func (r LocalOrGlobalFlagsInfo) GetTypeId() int16 {
 return LocalOrGlobalFlagsInfoGobRegId
}

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

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

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

func (r SanitizeInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.SanitizeInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.bool")
 if r.IsUnsanitizedVariant {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 if err := r.Sanitize.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

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

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

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

 return err
}

var SanitizeInfoGobRegId int16

func (r SanitizeInfo) GetTypeId() int16 {
 return SanitizeInfoGobRegId
}

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

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

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

func (r *StlInfo) 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.Stl = &val1
 }

 return err
}

var StlInfoGobRegId int16

func (r StlInfo) GetTypeId() int16 {
 return StlInfoGobRegId
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

func (r CcInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.CcInfo")
 hasher.WriteInt(21)
 hasher.WriteString(":.bool")
 if r.IsPrebuilt {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.CmakeSnapshotSupported {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.HasLlndkStubs {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.[]android.DataPath")
 hasher.WriteInt(len(r.DataPaths))
 for val1 := 0; val1 < len(r.DataPaths); val1++ {
  if err := r.DataPaths[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":.bool")
 if r.VendorAvailable {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.OdmAvailable {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.ProductAvailable {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.IsVendorPublicLibrary {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.NotDoubleLoadableReason)
 hasher.WriteString(":.[]android.SdkMemberType")
 hasher.WriteInt(len(r.SdkMemberTypes))
 for val2 := 0; val2 < len(r.SdkMemberTypes); val2++ {
  hasher.WriteString(":cc.android.SdkMemberType")
  val3 := r.SdkMemberTypes[val2] == nil
  if val3 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.SdkMemberTypes[val2]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val4 := r.SdkMemberTypes[val2] == nil
     if val4 {
      hasher.WriteByte(0)
     } else {
      val5 := func(hasher *proptools.Hasher) error {
       return r.SdkMemberTypes[val2].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val5); err != nil {
       return err
      }
     }
    }
   } else {
    r.SdkMemberTypes[val2].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 if err := r.LocalFlags.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.GlobalFlags.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.SystemIncludeFlags))
 for val6 := 0; val6 < len(r.SystemIncludeFlags); val6++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.SystemIncludeFlags[val6])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.NoOverrideFlags))
 for val7 := 0; val7 < len(r.NoOverrideFlags); val7++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.NoOverrideFlags[val7])
 }
 hasher.WriteString(":.*CompilerInfo")
 val8 := r.CompilerInfo == nil
 if val8 {
  hasher.WriteByte(0)
 } else {
  val9 := func(hasher *proptools.Hasher) error {
   if err := (*r.CompilerInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.CompilerInfo)), val9); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*LinkerInfo")
 val10 := r.LinkerInfo == nil
 if val10 {
  hasher.WriteByte(0)
 } else {
  val11 := func(hasher *proptools.Hasher) error {
   if err := (*r.LinkerInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.LinkerInfo)), val11); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*SnapshotInfo")
 val12 := r.SnapshotInfo == nil
 if val12 {
  hasher.WriteByte(0)
 } else {
  val13 := func(hasher *proptools.Hasher) error {
   if err := (*r.SnapshotInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.SnapshotInfo)), val13); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*LibraryInfo")
 val14 := r.LibraryInfo == nil
 if val14 {
  hasher.WriteByte(0)
 } else {
  val15 := func(hasher *proptools.Hasher) error {
   if err := (*r.LibraryInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.LibraryInfo)), val15); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*InstallerInfo")
 val16 := r.InstallerInfo == nil
 if val16 {
  hasher.WriteByte(0)
 } else {
  val17 := func(hasher *proptools.Hasher) error {
   if err := (*r.InstallerInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.InstallerInfo)), val17); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*StlInfo")
 val18 := r.StlInfo == nil
 if val18 {
  hasher.WriteByte(0)
 } else {
  val19 := func(hasher *proptools.Hasher) error {
   if err := (*r.StlInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.StlInfo)), val19); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*SanitizeInfo")
 val20 := r.SanitizeInfo == nil
 if val20 {
  hasher.WriteByte(0)
 } else {
  val21 := func(hasher *proptools.Hasher) error {
   if err := (*r.SanitizeInfo).CustomHash(hasher); err != nil {
    return err
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.SanitizeInfo)), val21); err != nil {
   return err
  }
 }
 return nil
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 var val29 bool
 if err = gobtools.DecodeBool(buf, &val29); err != nil {
  return err
 }
 if !val29 {
  var val28 CompilerInfo
  if err = val28.Decode(ctx, buf); err != nil {
   return err
  }
  r.CompilerInfo = &val28
 }

 var val32 bool
 if err = gobtools.DecodeBool(buf, &val32); err != nil {
  return err
 }
 if !val32 {
  var val31 LinkerInfo
  if err = val31.Decode(ctx, buf); err != nil {
   return err
  }
  r.LinkerInfo = &val31
 }

 var val35 bool
 if err = gobtools.DecodeBool(buf, &val35); err != nil {
  return err
 }
 if !val35 {
  var val34 SnapshotInfo
  if err = val34.Decode(ctx, buf); err != nil {
   return err
  }
  r.SnapshotInfo = &val34
 }

 var val38 bool
 if err = gobtools.DecodeBool(buf, &val38); err != nil {
  return err
 }
 if !val38 {
  var val37 LibraryInfo
  if err = val37.Decode(ctx, buf); err != nil {
   return err
  }
  r.LibraryInfo = &val37
 }

 var val41 bool
 if err = gobtools.DecodeBool(buf, &val41); err != nil {
  return err
 }
 if !val41 {
  var val40 InstallerInfo
  if err = val40.Decode(ctx, buf); err != nil {
   return err
  }
  r.InstallerInfo = &val40
 }

 var val44 bool
 if err = gobtools.DecodeBool(buf, &val44); err != nil {
  return err
 }
 if !val44 {
  var val43 StlInfo
  if err = val43.Decode(ctx, buf); err != nil {
   return err
  }
  r.StlInfo = &val43
 }

 var val47 bool
 if err = gobtools.DecodeBool(buf, &val47); err != nil {
  return err
 }
 if !val47 {
  var val46 SanitizeInfo
  if err = val46.Decode(ctx, buf); err != nil {
   return err
  }
  r.SanitizeInfo = &val46
 }

 return err
}

var CcInfoGobRegId int16

func (r CcInfo) GetTypeId() int16 {
 return CcInfoGobRegId
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

func (r LinkableInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.LinkableInfo")
 hasher.WriteInt(52)
 hasher.WriteString(":.bool")
 if r.StaticExecutable {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Static {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Shared {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Rlib {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Header {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.HasStubsVariants {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.StubsVersion)
 hasher.WriteString(":.bool")
 if r.IsStubs {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":cc.android.Path")
 val1 := r.UnstrippedOutputFile == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.UnstrippedOutputFile); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.UnstrippedOutputFile == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error {
      return r.UnstrippedOutputFile.(proptools.CustomHash).CustomHash(hasher)
     }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.UnstrippedOutputFile.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.OutputFile.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.CoverageFiles))
 for val4 := 0; val4 < len(r.CoverageFiles); val4++ {
  hasher.WriteString("android/soong/android:android.Path")
  val5 := r.CoverageFiles[val4] == nil
  if val5 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.CoverageFiles[val4]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val6 := r.CoverageFiles[val4] == nil
     if val6 {
      hasher.WriteByte(0)
     } else {
      val7 := func(hasher *proptools.Hasher) error {
       return r.CoverageFiles[val4].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
       return err
      }
     }
    }
   } else {
    r.CoverageFiles[val4].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 if err := r.CoverageOutputFile.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.bool")
 if r.LinkCoverage {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.SAbiDumpFiles))
 for val8 := 0; val8 < len(r.SAbiDumpFiles); val8++ {
  hasher.WriteString("android/soong/android:android.Path")
  val9 := r.SAbiDumpFiles[val8] == nil
  if val9 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.SAbiDumpFiles[val8]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val10 := r.SAbiDumpFiles[val8] == nil
     if val10 {
      hasher.WriteByte(0)
     } else {
      val11 := func(hasher *proptools.Hasher) error {
       return r.SAbiDumpFiles[val8].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val11); err != nil {
       return err
      }
     }
    }
   } else {
    r.SAbiDumpFiles[val8].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.Partition)
 hasher.WriteString(":.bool")
 if r.CcLibrary {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.CcLibraryInterface {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.RustLibraryInterface {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.CrateName)
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.ExportedCrateLinkDirs))
 for val12 := 0; val12 < len(r.ExportedCrateLinkDirs); val12++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.ExportedCrateLinkDirs[val12])
 }
 hasher.WriteString(":.[]android.Path")
 hasher.WriteInt(len(r.ExportedCrateLinkDirsDeps))
 for val13 := 0; val13 < len(r.ExportedCrateLinkDirsDeps); val13++ {
  hasher.WriteString(":cc.android.Path")
  val14 := r.ExportedCrateLinkDirsDeps[val13] == nil
  if val14 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.ExportedCrateLinkDirsDeps[val13]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val15 := r.ExportedCrateLinkDirsDeps[val13] == nil
     if val15 {
      hasher.WriteByte(0)
     } else {
      val16 := func(hasher *proptools.Hasher) error {
       return r.ExportedCrateLinkDirsDeps[val13].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val16); err != nil {
       return err
      }
     }
    }
   } else {
    r.ExportedCrateLinkDirsDeps[val13].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.bool")
 if r.HasNonSystemVariants {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.IsLlndk {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.IsNdk {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.InVendorOrProduct {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.SubName)
 hasher.WriteString(":.bool")
 if r.IsHwasan {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.InRamdisk {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.OnlyInRamdisk {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.InVendorRamdisk {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.OnlyInVendorRamdisk {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.InRecovery {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.OnlyInRecovery {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.InVendor {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.*bool")
 val17 := r.Installable == nil
 if val17 {
  hasher.WriteByte(0)
 } else {
  val18 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Installable {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Installable)), val18); err != nil {
   return err
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.RelativeInstallPath)
 hasher.WriteString(":.bool")
 if r.RustApexExclude {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Bootstrap {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.Multilib)
 hasher.WriteString(":.string")
 hasher.WriteString(r.ImplementationModuleNameForMake)
 hasher.WriteString(":.bool")
 if r.IsStubsImplementationRequired {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Symlinks))
 for val19 := 0; val19 < len(r.Symlinks); val19++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Symlinks[val19])
 }
 if err := r.APIListCoverageXMLPath.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":cc.InstallPairs")
 hasher.WriteString(":.[]InstallPair")
 hasher.WriteInt(len(r.FuzzSharedLibraries))
 for val20 := 0; val20 < len(r.FuzzSharedLibraries); val20++ {
  if err := r.FuzzSharedLibraries[val20].CustomHash(hasher); err != nil {
   return err
  }
 }
 val22 := func(hasher *proptools.Hasher, val21 FuzzLibraryInstall) error {
  if err := val21.CustomHash(hasher); err != nil {
   return err
  }
  return nil
 }
 if err := r.FuzzDependencies.Hash(hasher, "FuzzLibraryInstall", val22); err != nil {
  return err
 }
 hasher.WriteString(":.bool")
 if r.IsVndkPrebuiltLibrary {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.HasLLNDKStubs {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.IsLLNDKMovedToApex {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.ImplementationModuleName)
 hasher.WriteString(":.string")
 hasher.WriteString(r.SelectedStl)
 hasher.WriteString(":.*bool")
 val23 := r.Xom == nil
 if val23 {
  hasher.WriteByte(0)
 } else {
  val24 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Xom {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Xom)), val24); err != nil {
   return err
  }
 }
 hasher.WriteString(":.bool")
 if r.XomDisabledByPath {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 var val54 bool
 if err = gobtools.DecodeBool(buf, &val54); err != nil {
  return err
 }
 if !val54 {
  var val53 bool
  err = gobtools.DecodeBool(buf, &val53)
  if err != nil {
   return err
  }
  r.Installable = &val53
 }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 var val79 bool
 if err = gobtools.DecodeBool(buf, &val79); err != nil {
  return err
 }
 if !val79 {
  var val78 bool
  err = gobtools.DecodeBool(buf, &val78)
  if err != nil {
   return err
  }
  r.Xom = &val78
 }

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

 return err
}

var LinkableInfoGobRegId int16

func (r LinkableInfo) GetTypeId() int16 {
 return LinkableInfoGobRegId
}

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

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

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

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

func (r *InstallPair) 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.Src = nil
 } else {
  r.Src = val2.(android.Path)
 }

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

 return err
}

var InstallPairGobRegId int16

func (r InstallPair) GetTypeId() int16 {
 return InstallPairGobRegId
}

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

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

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

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

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

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

func (r RustRlibDep) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.RustRlibDep")
 hasher.WriteInt(5)
 hasher.WriteString(":cc.android.Path")
 val1 := r.LibPath == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.LibPath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.LibPath == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.LibPath.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.LibPath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.LinkDirs))
 for val4 := 0; val4 < len(r.LinkDirs); val4++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.LinkDirs[val4])
 }
 hasher.WriteString(":.[]android.Path")
 hasher.WriteInt(len(r.LinkDirsDeps))
 for val5 := 0; val5 < len(r.LinkDirsDeps); val5++ {
  hasher.WriteString(":cc.android.Path")
  val6 := r.LinkDirsDeps[val5] == nil
  if val6 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.LinkDirsDeps[val5]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val7 := r.LinkDirsDeps[val5] == nil
     if val7 {
      hasher.WriteByte(0)
     } else {
      val8 := func(hasher *proptools.Hasher) error {
       return r.LinkDirsDeps[val5].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val8); err != nil {
       return err
      }
     }
    }
   } else {
    r.LinkDirsDeps[val5].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.CrateName)
 hasher.WriteString(":.bool")
 if r.IsHwasan {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *RustRlibDep) 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.LibPath = nil
 } else {
  r.LibPath = val2.(android.Path)
 }

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

 var val8 int
 err = gobtools.DecodeInt(buf, &val8)
 if err != nil {
  return err
 }
 if val8 != -1 {
  r.LinkDirsDeps = 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 {
    r.LinkDirsDeps[val9] = nil
   } else {
    r.LinkDirsDeps[val9] = val11.(android.Path)
   }
  }
 }

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

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

 return err
}

var RustRlibDepGobRegId int16

func (r RustRlibDep) GetTypeId() int16 {
 return RustRlibDepGobRegId
}

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

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

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

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

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

func (r CcDepInSameApexChecker) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.CcDepInSameApexChecker")
 hasher.WriteInt(4)
 hasher.WriteString(":.bool")
 if r.Static {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.HasStubsVariants {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.IsLlndk {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.Host {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

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

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

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

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

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

 return err
}

var CcDepInSameApexCheckerGobRegId int16

func (r CcDepInSameApexChecker) GetTypeId() int16 {
 return CcDepInSameApexCheckerGobRegId
}

// end of cc.go

// begin of fdo_profile.go
func init() {
 FdoProfileInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(FdoProfileInfo) })
}

func (r FdoProfileInfo) 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.EncodeBool(buf, r.IncompleteCoverage); err != nil {
  return err
 }
 return err
}

func (r FdoProfileInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.FdoProfileInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":cc.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(":.bool")
 if r.IncompleteCoverage {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *FdoProfileInfo) 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)
 }

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

 return err
}

var FdoProfileInfoGobRegId int16

func (r FdoProfileInfo) GetTypeId() int16 {
 return FdoProfileInfoGobRegId
}

// end of fdo_profile.go

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

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

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

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

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

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

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

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

func (r FuzzLibraryInstall) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.FuzzLibraryInstall")
 hasher.WriteInt(6)
 hasher.WriteString(":cc.android.Path")
 val1 := r.Src == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.Src); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.Src == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.Src.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.Src.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.bool")
 if r.IsFuzzer {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.JNIDst)
 if err := r.InstallDst.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.SymbolsDst.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.bool")
 if r.HasSymbolsDst {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *FuzzLibraryInstall) 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.Src = nil
 } else {
  r.Src = val2.(android.Path)
 }

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

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

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

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

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

 return err
}

var FuzzLibraryInstallGobRegId int16

func (r FuzzLibraryInstall) GetTypeId() int16 {
 return FuzzLibraryInstallGobRegId
}

// end of fuzz.go

// begin of image_sdk_traits.go
func init() {
 imageSdkTraitStructGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(imageSdkTraitStruct) })
}

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

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

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

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

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

 return err
}

var imageSdkTraitStructGobRegId int16

func (r imageSdkTraitStruct) GetTypeId() int16 {
 return imageSdkTraitStructGobRegId
}

// end of image_sdk_traits.go

// begin of lfi.go
func init() {
 lfiInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(lfiInfo) })
}

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

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

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

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

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

func (r *lfiInfo) 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.includeDir = nil
 } else {
  r.includeDir = val2.(android.Path)
 }

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

 var val7 int
 err = gobtools.DecodeInt(buf, &val7)
 if err != nil {
  return err
 }
 if val7 != -1 {
  r.srcs = 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.srcs[val8] = nil
   } else {
    r.srcs[val8] = val10.(android.Path)
   }
  }
 }

 return err
}

var lfiInfoGobRegId int16

func (r lfiInfo) GetTypeId() int16 {
 return lfiInfoGobRegId
}

// end of lfi.go

// begin of library_sdk_member.go
func init() {
 librarySdkMemberTypeGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(librarySdkMemberType) })
}

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

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

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

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

func (r librarySdkMemberType) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.librarySdkMemberType")
 hasher.WriteInt(3)
 if err := r.SdkMemberTypeBase.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.string")
 hasher.WriteString(r.prebuiltModuleType)
 hasher.WriteString(":.bool")
 if r.noOutputFiles {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

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

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

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

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

 return err
}

var librarySdkMemberTypeGobRegId int16

func (r librarySdkMemberType) GetTypeId() int16 {
 return librarySdkMemberTypeGobRegId
}

// end of library_sdk_member.go

// begin of linkable.go
func init() {
 SharedLibraryInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SharedLibraryInfo) })
 SharedStubLibraryGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SharedStubLibrary) })
 SharedLibraryStubsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SharedLibraryStubsInfo) })
 StaticLibraryInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(StaticLibraryInfo) })
 HeaderLibraryInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(HeaderLibraryInfo) })
 FlagExporterInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(FlagExporterInfo) })
 ImplementationDepInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(ImplementationDepInfo) })
}

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

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

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

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

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

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

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

func (r SharedLibraryInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.SharedLibraryInfo")
 hasher.WriteInt(6)
 hasher.WriteString(":cc.android.Path")
 val1 := r.SharedLibrary == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.SharedLibrary); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.SharedLibrary == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.SharedLibrary.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.SharedLibrary.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.Target.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.TableOfContents.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":.bool")
 if r.IsStubs {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 val5 := func(hasher *proptools.Hasher, val4 string) error {
  hasher.WriteString(":.string")
  hasher.WriteString(val4)
  return nil
 }
 if err := r.ImplementationDeps.Hash(hasher, "string", val5); err != nil {
  return err
 }
 val10 := func(hasher *proptools.Hasher, val6 android.Path) error {
  hasher.WriteString(":cc.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.TransitiveStaticLibrariesForOrdering.Hash(hasher, "android.Path", val10); err != nil {
  return err
 }
 return nil
}

func (r *SharedLibraryInfo) 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.SharedLibrary = nil
 } else {
  r.SharedLibrary = val2.(android.Path)
 }

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

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

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

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

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

 return err
}

var SharedLibraryInfoGobRegId int16

func (r SharedLibraryInfo) GetTypeId() int16 {
 return SharedLibraryInfoGobRegId
}

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

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

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

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

func (r SharedStubLibrary) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.SharedStubLibrary")
 hasher.WriteInt(3)
 hasher.WriteString(":.string")
 hasher.WriteString(r.Version)
 if err := r.SharedLibraryInfo.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.FlagExporterInfo.CustomHash(hasher); err != nil {
  return err
 }
 return nil
}

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

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

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

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

 return err
}

var SharedStubLibraryGobRegId int16

func (r SharedStubLibrary) GetTypeId() int16 {
 return SharedStubLibraryGobRegId
}

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

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

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

func (r SharedLibraryStubsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.SharedLibraryStubsInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.[]SharedStubLibrary")
 hasher.WriteInt(len(r.SharedStubLibraries))
 for val1 := 0; val1 < len(r.SharedStubLibraries); val1++ {
  if err := r.SharedStubLibraries[val1].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":.bool")
 if r.IsLLNDK {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *SharedLibraryStubsInfo) 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.SharedStubLibraries = make([]SharedStubLibrary, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   if err = r.SharedStubLibraries[val3].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

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

 return err
}

var SharedLibraryStubsInfoGobRegId int16

func (r SharedLibraryStubsInfo) GetTypeId() int16 {
 return SharedLibraryStubsInfoGobRegId
}

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

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

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

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

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

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

func (r StaticLibraryInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.StaticLibraryInfo")
 hasher.WriteInt(5)
 hasher.WriteString(":cc.android.Path")
 val1 := r.StaticLibrary == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.StaticLibrary); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val2 := r.StaticLibrary == nil
    if val2 {
     hasher.WriteByte(0)
    } else {
     val3 := func(hasher *proptools.Hasher) error { return r.StaticLibrary.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val3); err != nil {
      return err
     }
    }
   }
  } else {
   r.StaticLibrary.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 if err := r.Objects.CustomHash(hasher); err != nil {
  return err
 }
 if err := r.ReuseObjects.CustomHash(hasher); err != nil {
  return err
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.WholeStaticLibsFromPrebuilts))
 for val4 := 0; val4 < len(r.WholeStaticLibsFromPrebuilts); val4++ {
  hasher.WriteString("android/soong/android:android.Path")
  val5 := r.WholeStaticLibsFromPrebuilts[val4] == nil
  if val5 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.WholeStaticLibsFromPrebuilts[val4]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val6 := r.WholeStaticLibsFromPrebuilts[val4] == nil
     if val6 {
      hasher.WriteByte(0)
     } else {
      val7 := func(hasher *proptools.Hasher) error {
       return r.WholeStaticLibsFromPrebuilts[val4].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val7); err != nil {
       return err
      }
     }
    }
   } else {
    r.WholeStaticLibsFromPrebuilts[val4].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 val12 := func(hasher *proptools.Hasher, val8 android.Path) error {
  hasher.WriteString(":cc.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.TransitiveStaticLibrariesForOrdering.Hash(hasher, "android.Path", val12); err != nil {
  return err
 }
 return nil
}

func (r *StaticLibraryInfo) 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.StaticLibrary = nil
 } else {
  r.StaticLibrary = val2.(android.Path)
 }

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

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

 var val7 int
 err = gobtools.DecodeInt(buf, &val7)
 if err != nil {
  return err
 }
 if val7 != -1 {
  r.WholeStaticLibsFromPrebuilts = 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.WholeStaticLibsFromPrebuilts[val8] = nil
   } else {
    r.WholeStaticLibsFromPrebuilts[val8] = val10.(android.Path)
   }
  }
 }

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

 return err
}

var StaticLibraryInfoGobRegId int16

func (r StaticLibraryInfo) GetTypeId() int16 {
 return StaticLibraryInfoGobRegId
}

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

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

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

 return err
}

var HeaderLibraryInfoGobRegId int16

func (r HeaderLibraryInfo) GetTypeId() int16 {
 return HeaderLibraryInfoGobRegId
}

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

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

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

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

 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 val4 := 0; val4 < len(r.Deps); val4++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.Deps[val4]); err != nil {
    return err
   }
  }
 }

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

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

func (r FlagExporterInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.FlagExporterInfo")
 hasher.WriteInt(6)
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.IncludeDirs))
 for val1 := 0; val1 < len(r.IncludeDirs); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.IncludeDirs[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.IncludeDirs[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.IncludeDirs[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.IncludeDirs[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.IncludeDirs[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.SystemIncludeDirs))
 for val5 := 0; val5 < len(r.SystemIncludeDirs); val5++ {
  hasher.WriteString("android/soong/android:android.Path")
  val6 := r.SystemIncludeDirs[val5] == nil
  if val6 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.SystemIncludeDirs[val5]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val7 := r.SystemIncludeDirs[val5] == nil
     if val7 {
      hasher.WriteByte(0)
     } else {
      val8 := func(hasher *proptools.Hasher) error {
       return r.SystemIncludeDirs[val5].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val8); err != nil {
       return err
      }
     }
    }
   } else {
    r.SystemIncludeDirs[val5].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Flags))
 for val9 := 0; val9 < len(r.Flags); val9++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Flags[val9])
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.Deps))
 for val10 := 0; val10 < len(r.Deps); val10++ {
  hasher.WriteString("android/soong/android:android.Path")
  val11 := r.Deps[val10] == nil
  if val11 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.Deps[val10]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val12 := r.Deps[val10] == nil
     if val12 {
      hasher.WriteByte(0)
     } else {
      val13 := func(hasher *proptools.Hasher) error { return r.Deps[val10].(proptools.CustomHash).CustomHash(hasher) }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val13); err != nil {
       return err
      }
     }
    }
   } else {
    r.Deps[val10].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":.[]RustRlibDep")
 hasher.WriteInt(len(r.RustRlibDeps))
 for val14 := 0; val14 < len(r.RustRlibDeps); val14++ {
  if err := r.RustRlibDeps[val14].CustomHash(hasher); err != nil {
   return err
  }
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.GeneratedHeaders))
 for val15 := 0; val15 < len(r.GeneratedHeaders); val15++ {
  hasher.WriteString("android/soong/android:android.Path")
  val16 := r.GeneratedHeaders[val15] == nil
  if val16 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.GeneratedHeaders[val15]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val17 := r.GeneratedHeaders[val15] == nil
     if val17 {
      hasher.WriteByte(0)
     } else {
      val18 := func(hasher *proptools.Hasher) error {
       return r.GeneratedHeaders[val15].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val18); err != nil {
       return err
      }
     }
    }
   } else {
    r.GeneratedHeaders[val15].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 return nil
}

func (r *FlagExporterInfo) 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.IncludeDirs = 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.IncludeDirs[val4] = nil
   } else {
    r.IncludeDirs[val4] = val6.(android.Path)
   }
  }
 }

 var val9 int
 err = gobtools.DecodeInt(buf, &val9)
 if err != nil {
  return err
 }
 if val9 != -1 {
  r.SystemIncludeDirs = 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.SystemIncludeDirs[val10] = nil
   } else {
    r.SystemIncludeDirs[val10] = val12.(android.Path)
   }
  }
 }

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

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

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

 var val29 int
 err = gobtools.DecodeInt(buf, &val29)
 if err != nil {
  return err
 }
 if val29 != -1 {
  r.GeneratedHeaders = 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.GeneratedHeaders[val30] = nil
   } else {
    r.GeneratedHeaders[val30] = val32.(android.Path)
   }
  }
 }

 return err
}

var FlagExporterInfoGobRegId int16

func (r FlagExporterInfo) GetTypeId() int16 {
 return FlagExporterInfoGobRegId
}

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

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

func (r ImplementationDepInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.ImplementationDepInfo")
 hasher.WriteInt(1)
 val5 := func(hasher *proptools.Hasher, val1 android.Path) error {
  hasher.WriteString(":cc.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.ImplementationDeps.Hash(hasher, "android.Path", val5); err != nil {
  return err
 }
 return nil
}

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

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

 return err
}

var ImplementationDepInfoGobRegId int16

func (r ImplementationDepInfo) GetTypeId() int16 {
 return ImplementationDepInfoGobRegId
}

// end of linkable.go

// begin of native_bridge_sdk_trait.go
func init() {
 nativeBridgeSdkTraitStructGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(nativeBridgeSdkTraitStruct) })
}

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

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

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

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

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

 return err
}

var nativeBridgeSdkTraitStructGobRegId int16

func (r nativeBridgeSdkTraitStruct) GetTypeId() int16 {
 return nativeBridgeSdkTraitStructGobRegId
}

// end of native_bridge_sdk_trait.go

// begin of ndk_headers.go
func init() {
 NdkHeaderInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(NdkHeaderInfo) })
}

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

 if r.SrcPaths == nil {
  if err = gobtools.EncodeInt(buf, -1); err != nil {
   return err
  }
 } else {
  if err = gobtools.EncodeInt(buf, len(r.SrcPaths)); err != nil {
   return err
  }
  for val1 := 0; val1 < len(r.SrcPaths); val1++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.SrcPaths[val1]); 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 val2 := 0; val2 < len(r.InstallPaths); val2++ {
   if err = gobtools.EncodeInterface(ctx, buf, r.InstallPaths[val2]); err != nil {
    return err
   }
  }
 }

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

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

func (r NdkHeaderInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.NdkHeaderInfo")
 hasher.WriteInt(4)
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.SrcPaths))
 for val1 := 0; val1 < len(r.SrcPaths); val1++ {
  hasher.WriteString("android/soong/android:android.Path")
  val2 := r.SrcPaths[val1] == nil
  if val2 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.SrcPaths[val1]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val3 := r.SrcPaths[val1] == nil
     if val3 {
      hasher.WriteByte(0)
     } else {
      val4 := func(hasher *proptools.Hasher) error {
       return r.SrcPaths[val1].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val4); err != nil {
       return err
      }
     }
    }
   } else {
    r.SrcPaths[val1].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":cc.android.Paths")
 hasher.WriteString(":.[]Path")
 hasher.WriteInt(len(r.InstallPaths))
 for val5 := 0; val5 < len(r.InstallPaths); val5++ {
  hasher.WriteString("android/soong/android:android.Path")
  val6 := r.InstallPaths[val5] == nil
  if val6 {
   hasher.WriteByte(0)
  } else {
   if v := reflect.ValueOf(r.InstallPaths[val5]); v.Kind() == reflect.Ptr {
    if v.IsNil() {
     panic(fmt.Errorf("nil pointer is not supported in interface"))
    } else {
     val7 := r.InstallPaths[val5] == nil
     if val7 {
      hasher.WriteByte(0)
     } else {
      val8 := func(hasher *proptools.Hasher) error {
       return r.InstallPaths[val5].(proptools.CustomHash).CustomHash(hasher)
      }
      if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val8); err != nil {
       return err
      }
     }
    }
   } else {
    r.InstallPaths[val5].(proptools.CustomHash).CustomHash(hasher)
   }
  }
 }
 hasher.WriteString(":cc.android.Path")
 val9 := r.LicensePath == nil
 if val9 {
  hasher.WriteByte(0)
 } else {
  if v := reflect.ValueOf(r.LicensePath); v.Kind() == reflect.Ptr {
   if v.IsNil() {
    panic(fmt.Errorf("nil pointer is not supported in interface"))
   } else {
    val10 := r.LicensePath == nil
    if val10 {
     hasher.WriteByte(0)
    } else {
     val11 := func(hasher *proptools.Hasher) error { return r.LicensePath.(proptools.CustomHash).CustomHash(hasher) }
     if err := proptools.HashReference(hasher, uintptr(v.Pointer()), val11); err != nil {
      return err
     }
    }
   }
  } else {
   r.LicensePath.(proptools.CustomHash).CustomHash(hasher)
  }
 }
 hasher.WriteString(":.bool")
 if r.SkipVerification {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

func (r *NdkHeaderInfo) 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.SrcPaths = 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.SrcPaths[val4] = nil
   } else {
    r.SrcPaths[val4] = val6.(android.Path)
   }
  }
 }

 var val9 int
 err = gobtools.DecodeInt(buf, &val9)
 if err != nil {
  return err
 }
 if val9 != -1 {
  r.InstallPaths = 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.InstallPaths[val10] = nil
   } else {
    r.InstallPaths[val10] = val12.(android.Path)
   }
  }
 }

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

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

 return err
}

var NdkHeaderInfoGobRegId int16

func (r NdkHeaderInfo) GetTypeId() int16 {
 return NdkHeaderInfoGobRegId
}

// end of ndk_headers.go

// begin of sabi.go
func init() {
 taggedLsDumpGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(taggedLsDump) })
 TaggedLsDumpsInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(TaggedLsDumpsInfo) })
}

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

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

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

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

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

 var val2 string
 err = gobtools.DecodeString(buf, &val2)
 if err != nil {
  return err
 }
 r.tag = lsdumpTag(val2)

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

 return err
}

var taggedLsDumpGobRegId int16

func (r taggedLsDump) GetTypeId() int16 {
 return taggedLsDumpGobRegId
}

func (r TaggedLsDumpsInfo) 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 TaggedLsDumpsInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":.[]taggedLsDump")
 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 *TaggedLsDumpsInfo) 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([]taggedLsDump, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   if err = (*r)[val3].Decode(ctx, buf); err != nil {
    return err
   }
  }
 }

 return err
}

var TaggedLsDumpsInfoGobRegId int16

func (r TaggedLsDumpsInfo) GetTypeId() int16 {
 return TaggedLsDumpsInfoGobRegId
}

// end of sabi.go

// begin of sanitize.go
func init() {
 SanitizeUserPropsGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SanitizeUserProps) })
 PlatformSanitizeableInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(PlatformSanitizeableInfo) })
 SanitizerRuntimeDepInfoGobRegId = gobtools.RegisterType(func() gobtools.CustomDec { return new(SanitizerRuntimeDepInfo) })
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 val21 := r.Diag.Memtag_heap == nil
 if err = gobtools.EncodeBool(buf, val21); err != nil {
  return err
 }
 if !val21 {
  if err = gobtools.EncodeBool(buf, (*r.Diag.Memtag_heap)); err != nil {
   return err
  }
 }

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

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

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

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

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

func (r SanitizeUserProps) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.SanitizeUserProps")
 hasher.WriteInt(21)
 hasher.WriteString(":.*bool")
 val1 := r.Never == nil
 if val1 {
  hasher.WriteByte(0)
 } else {
  val2 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Never {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Never)), val2); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val3 := r.Address == nil
 if val3 {
  hasher.WriteByte(0)
 } else {
  val4 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Address {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Address)), val4); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val5 := r.Thread == nil
 if val5 {
  hasher.WriteByte(0)
 } else {
  val6 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Thread {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Thread)), val6); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val7 := r.Hwaddress == nil
 if val7 {
  hasher.WriteByte(0)
 } else {
  val8 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Hwaddress {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Hwaddress)), val8); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val9 := r.All_undefined == nil
 if val9 {
  hasher.WriteByte(0)
 } else {
  val10 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.All_undefined {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.All_undefined)), val10); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val11 := r.Undefined == nil
 if val11 {
  hasher.WriteByte(0)
 } else {
  val12 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Undefined {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Undefined)), val12); err != nil {
   return err
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Misc_undefined))
 for val13 := 0; val13 < len(r.Misc_undefined); val13++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Misc_undefined[val13])
 }
 hasher.WriteString(":.*bool")
 val14 := r.Fuzzer == nil
 if val14 {
  hasher.WriteByte(0)
 } else {
  val15 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Fuzzer {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Fuzzer)), val15); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val16 := r.Safestack == nil
 if val16 {
  hasher.WriteByte(0)
 } else {
  val17 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Safestack {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Safestack)), val17); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val18 := r.Cfi == nil
 if val18 {
  hasher.WriteByte(0)
 } else {
  val19 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Cfi {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Cfi)), val19); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val20 := r.Integer_overflow == nil
 if val20 {
  hasher.WriteByte(0)
 } else {
  val21 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Integer_overflow {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Integer_overflow)), val21); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val22 := r.Scudo == nil
 if val22 {
  hasher.WriteByte(0)
 } else {
  val23 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Scudo {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Scudo)), val23); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val24 := r.Scs == nil
 if val24 {
  hasher.WriteByte(0)
 } else {
  val25 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Scs {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Scs)), val25); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val26 := r.Memtag_heap == nil
 if val26 {
  hasher.WriteByte(0)
 } else {
  val27 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Memtag_heap {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Memtag_heap)), val27); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val28 := r.Memtag_stack == nil
 if val28 {
  hasher.WriteByte(0)
 } else {
  val29 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Memtag_stack {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Memtag_stack)), val29); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val30 := r.Memtag_globals == nil
 if val30 {
  hasher.WriteByte(0)
 } else {
  val31 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Memtag_globals {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Memtag_globals)), val31); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val32 := r.Writeonly == nil
 if val32 {
  hasher.WriteByte(0)
 } else {
  val33 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Writeonly {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Writeonly)), val33); err != nil {
   return err
  }
 }
 hasher.WriteString(":cc.r.Diag")
 hasher.WriteInt(6)
 hasher.WriteString(":.*bool")
 val34 := r.Diag.Undefined == nil
 if val34 {
  hasher.WriteByte(0)
 } else {
  val35 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Diag.Undefined {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Diag.Undefined)), val35); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val36 := r.Diag.Cfi == nil
 if val36 {
  hasher.WriteByte(0)
 } else {
  val37 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Diag.Cfi {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Diag.Cfi)), val37); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val38 := r.Diag.Integer_overflow == nil
 if val38 {
  hasher.WriteByte(0)
 } else {
  val39 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Diag.Integer_overflow {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Diag.Integer_overflow)), val39); err != nil {
   return err
  }
 }
 hasher.WriteString(":.*bool")
 val40 := r.Diag.Memtag_heap == nil
 if val40 {
  hasher.WriteByte(0)
 } else {
  val41 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Diag.Memtag_heap {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Diag.Memtag_heap)), val41); err != nil {
   return err
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Diag.Misc_undefined))
 for val42 := 0; val42 < len(r.Diag.Misc_undefined); val42++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Diag.Misc_undefined[val42])
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Diag.No_recover))
 for val43 := 0; val43 < len(r.Diag.No_recover); val43++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Diag.No_recover[val43])
 }
 hasher.WriteString(":cc.r.Config")
 hasher.WriteInt(1)
 hasher.WriteString(":.*bool")
 val44 := r.Config.Cfi_assembly_support == nil
 if val44 {
  hasher.WriteByte(0)
 } else {
  val45 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.bool")
   if *r.Config.Cfi_assembly_support {
    hasher.WriteByte(1)
   } else {
    hasher.WriteByte(0)
   }
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Config.Cfi_assembly_support)), val45); err != nil {
   return err
  }
 }
 hasher.WriteString(":.[]string")
 hasher.WriteInt(len(r.Recover))
 for val46 := 0; val46 < len(r.Recover); val46++ {
  hasher.WriteString(":.string")
  hasher.WriteString(r.Recover[val46])
 }
 hasher.WriteString(":.*string")
 val47 := r.Blocklist == nil
 if val47 {
  hasher.WriteByte(0)
 } else {
  val48 := func(hasher *proptools.Hasher) error {
   hasher.WriteString(":.string")
   hasher.WriteString((*r.Blocklist))
   return nil
  }
  if err := proptools.HashReference(hasher, uintptr(unsafe.Pointer(r.Blocklist)), val48); err != nil {
   return err
  }
 }
 return nil
}

func (r *SanitizeUserProps) 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 bool
  err = gobtools.DecodeBool(buf, &val1)
  if err != nil {
   return err
  }
  r.Never = &val1
 }

 var val5 bool
 if err = gobtools.DecodeBool(buf, &val5); err != nil {
  return err
 }
 if !val5 {
  var val4 bool
  err = gobtools.DecodeBool(buf, &val4)
  if err != nil {
   return err
  }
  r.Address = &val4
 }

 var val8 bool
 if err = gobtools.DecodeBool(buf, &val8); err != nil {
  return err
 }
 if !val8 {
  var val7 bool
  err = gobtools.DecodeBool(buf, &val7)
  if err != nil {
   return err
  }
  r.Thread = &val7
 }

 var val11 bool
 if err = gobtools.DecodeBool(buf, &val11); err != nil {
  return err
 }
 if !val11 {
  var val10 bool
  err = gobtools.DecodeBool(buf, &val10)
  if err != nil {
   return err
  }
  r.Hwaddress = &val10
 }

 var val14 bool
 if err = gobtools.DecodeBool(buf, &val14); err != nil {
  return err
 }
 if !val14 {
  var val13 bool
  err = gobtools.DecodeBool(buf, &val13)
  if err != nil {
   return err
  }
  r.All_undefined = &val13
 }

 var val17 bool
 if err = gobtools.DecodeBool(buf, &val17); err != nil {
  return err
 }
 if !val17 {
  var val16 bool
  err = gobtools.DecodeBool(buf, &val16)
  if err != nil {
   return err
  }
  r.Undefined = &val16
 }

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

 var val24 bool
 if err = gobtools.DecodeBool(buf, &val24); err != nil {
  return err
 }
 if !val24 {
  var val23 bool
  err = gobtools.DecodeBool(buf, &val23)
  if err != nil {
   return err
  }
  r.Fuzzer = &val23
 }

 var val27 bool
 if err = gobtools.DecodeBool(buf, &val27); err != nil {
  return err
 }
 if !val27 {
  var val26 bool
  err = gobtools.DecodeBool(buf, &val26)
  if err != nil {
   return err
  }
  r.Safestack = &val26
 }

 var val30 bool
 if err = gobtools.DecodeBool(buf, &val30); err != nil {
  return err
 }
 if !val30 {
  var val29 bool
  err = gobtools.DecodeBool(buf, &val29)
  if err != nil {
   return err
  }
  r.Cfi = &val29
 }

 var val33 bool
 if err = gobtools.DecodeBool(buf, &val33); err != nil {
  return err
 }
 if !val33 {
  var val32 bool
  err = gobtools.DecodeBool(buf, &val32)
  if err != nil {
   return err
  }
  r.Integer_overflow = &val32
 }

 var val36 bool
 if err = gobtools.DecodeBool(buf, &val36); err != nil {
  return err
 }
 if !val36 {
  var val35 bool
  err = gobtools.DecodeBool(buf, &val35)
  if err != nil {
   return err
  }
  r.Scudo = &val35
 }

 var val39 bool
 if err = gobtools.DecodeBool(buf, &val39); err != nil {
  return err
 }
 if !val39 {
  var val38 bool
  err = gobtools.DecodeBool(buf, &val38)
  if err != nil {
   return err
  }
  r.Scs = &val38
 }

 var val42 bool
 if err = gobtools.DecodeBool(buf, &val42); err != nil {
  return err
 }
 if !val42 {
  var val41 bool
  err = gobtools.DecodeBool(buf, &val41)
  if err != nil {
   return err
  }
  r.Memtag_heap = &val41
 }

 var val45 bool
 if err = gobtools.DecodeBool(buf, &val45); err != nil {
  return err
 }
 if !val45 {
  var val44 bool
  err = gobtools.DecodeBool(buf, &val44)
  if err != nil {
   return err
  }
  r.Memtag_stack = &val44
 }

 var val48 bool
 if err = gobtools.DecodeBool(buf, &val48); err != nil {
  return err
 }
 if !val48 {
  var val47 bool
  err = gobtools.DecodeBool(buf, &val47)
  if err != nil {
   return err
  }
  r.Memtag_globals = &val47
 }

 var val51 bool
 if err = gobtools.DecodeBool(buf, &val51); err != nil {
  return err
 }
 if !val51 {
  var val50 bool
  err = gobtools.DecodeBool(buf, &val50)
  if err != nil {
   return err
  }
  r.Writeonly = &val50
 }

 var val55 bool
 if err = gobtools.DecodeBool(buf, &val55); err != nil {
  return err
 }
 if !val55 {
  var val54 bool
  err = gobtools.DecodeBool(buf, &val54)
  if err != nil {
   return err
  }
  r.Diag.Undefined = &val54
 }

 var val58 bool
 if err = gobtools.DecodeBool(buf, &val58); err != nil {
  return err
 }
 if !val58 {
  var val57 bool
  err = gobtools.DecodeBool(buf, &val57)
  if err != nil {
   return err
  }
  r.Diag.Cfi = &val57
 }

 var val61 bool
 if err = gobtools.DecodeBool(buf, &val61); err != nil {
  return err
 }
 if !val61 {
  var val60 bool
  err = gobtools.DecodeBool(buf, &val60)
  if err != nil {
   return err
  }
  r.Diag.Integer_overflow = &val60
 }

 var val64 bool
 if err = gobtools.DecodeBool(buf, &val64); err != nil {
  return err
 }
 if !val64 {
  var val63 bool
  err = gobtools.DecodeBool(buf, &val63)
  if err != nil {
   return err
  }
  r.Diag.Memtag_heap = &val63
 }

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

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

 var val76 bool
 if err = gobtools.DecodeBool(buf, &val76); err != nil {
  return err
 }
 if !val76 {
  var val75 bool
  err = gobtools.DecodeBool(buf, &val75)
  if err != nil {
   return err
  }
  r.Config.Cfi_assembly_support = &val75
 }

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

 var val83 bool
 if err = gobtools.DecodeBool(buf, &val83); err != nil {
  return err
 }
 if !val83 {
  var val82 string
  err = gobtools.DecodeString(buf, &val82)
  if err != nil {
   return err
  }
  r.Blocklist = &val82
 }

 return err
}

var SanitizeUserPropsGobRegId int16

func (r SanitizeUserProps) GetTypeId() int16 {
 return SanitizeUserPropsGobRegId
}

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

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

func (r PlatformSanitizeableInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.PlatformSanitizeableInfo")
 hasher.WriteInt(1)
 hasher.WriteString(":.[]bool")
 hasher.WriteInt(len(r.IsSanitizerEnabled))
 for val1 := 0; val1 < len(r.IsSanitizerEnabled); val1++ {
  hasher.WriteString(":.bool")
  if r.IsSanitizerEnabled[val1] {
   hasher.WriteByte(1)
  } else {
   hasher.WriteByte(0)
  }
 }
 return nil
}

func (r *PlatformSanitizeableInfo) 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.IsSanitizerEnabled = make([]bool, val2)
  for val3 := 0; val3 < int(val2); val3++ {
   err = gobtools.DecodeBool(buf, &r.IsSanitizerEnabled[val3])
   if err != nil {
    return err
   }
  }
 }

 return err
}

var PlatformSanitizeableInfoGobRegId int16

func (r PlatformSanitizeableInfo) GetTypeId() int16 {
 return PlatformSanitizeableInfoGobRegId
}

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

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

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

func (r SanitizerRuntimeDepInfo) CustomHash(hasher *proptools.Hasher) error {
 hasher.WriteString(":cc.SanitizerRuntimeDepInfo")
 hasher.WriteInt(2)
 hasher.WriteString(":.bool")
 if r.MinimalRuntimeNeeded {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 hasher.WriteString(":.bool")
 if r.UbsanRuntimeNeeded {
  hasher.WriteByte(1)
 } else {
  hasher.WriteByte(0)
 }
 return nil
}

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

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

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

 return err
}

var SanitizerRuntimeDepInfoGobRegId int16

func (r SanitizerRuntimeDepInfo) GetTypeId() int16 {
 return SanitizerRuntimeDepInfoGobRegId
}

// end of sanitize.go

[Seitenstruktur0.142Druckenetwas mehr zur Ethik2026-06-28]