code: func typeCheck(t Type, value reflect.Value) error {
  	if t.T == SliceTy || t.T == ArrayTy {
  		return sliceTypeCheck(t, value)
  	}
  
  	// Check base type validity. Element types will be checked later on.
  	if t.Kind != value.Kind() {
  		return typeErr(t.Kind, value.Kind())
  	} else if t.T == FixedBytesTy && t.Size != value.Len() {
  		return typeErr(t.Type, value.Type())
  	} else {
  		return nil
  	}
  
  }
docs: // typeCheck checks that the given reflection value can be assigned to the reflection
  // type in t.