Eine aufbereitete Darstellung der Quelle

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

Benutzer

Quelle  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

[zur Elbe Produktseite wechseln0.96QuellennavigatorsAnalyse erneut starten2026-06-28]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik