Program: 68974
Project: 68974
Buggy source:
@Override public Mutation apply(String inputRow){
  try {
    byte[] inputRowBytes=DatatypeConverter.parseBase64Binary(inputRow);
    ObjectInputStream ois=new ObjectInputStream(new ByteArrayInputStream(inputRowBytes));
    Struct struct=(Struct)ois.readObject();
    Mutation.WriteBuilder mutationBuilder=Mutation.newInsertOrUpdateBuilder(tableName);
    Type tableType=struct.getType();
    for (    Type.StructField field : tableType.getStructFields()) {
      Type type=field.getType();
      String name=field.getName();
      if (struct.isNull(name)) {
        continue;
      }
      if (type.getCode() == Code.STRING) {
        mutationBuilder.set(name).to((String)struct.getString(name));
      }
 else       if (type.getCode() == Code.BOOL) {
        mutationBuilder.set(name).to((boolean)struct.getBoolean(name));
      }
 else       if (type.getCode() == Code.BYTES) {
        mutationBuilder.set(name).to((ByteArray)struct.getBytes(name));
      }
 else       if (type.getCode() == Code.DATE) {
        mutationBuilder.set(name).to((Date)struct.getDate(name));
      }
 else       if (type.getCode() == Code.FLOAT64) {
        mutationBuilder.set(name).to((double)struct.getDouble(name));
      }
 else       if (type.getCode() == Code.TIMESTAMP) {
        mutationBuilder.set(name).to((Timestamp)struct.getTimestamp(name));
      }
 else       if (type.getCode() == Code.INT64) {
        mutationBuilder.set(name).to((long)struct.getLong(name));
      }
 else {
        throw new RuntimeException("String_Node_Str" + name + "String_Node_Str"+ type.getCode());
      }
    }
    return mutationBuilder.build();
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str" + e);
  }
}

Fixed version (ground truth):
@Override public Mutation apply(String inputRow){
  try {
    byte[] inputRowBytes=DatatypeConverter.parseBase64Binary(inputRow);
    ObjectInputStream ois=new ObjectInputStream(new ByteArrayInputStream(inputRowBytes));
    Struct struct=(Struct)ois.readObject();
    Mutation.WriteBuilder mutationBuilder=Mutation.newInsertOrUpdateBuilder(tableName);
    Type tableType=struct.getType();
    for (    Type.StructField field : tableType.getStructFields()) {
      Type type=field.getType();
      String name=field.getName();
      if (struct.isNull(name)) {
        continue;
      }
      if (type.getCode() == Code.STRING) {
        mutationBuilder.set(name).to((String)struct.getString(name));
      }
 else       if (type.getCode() == Code.BOOL) {
        mutationBuilder.set(name).to((boolean)struct.getBoolean(name));
      }
 else       if (type.getCode() == Code.BYTES) {
        mutationBuilder.set(name).to((ByteArray)struct.getBytes(name));
      }
 else       if (type.getCode() == Code.DATE) {
        mutationBuilder.set(name).to((Date)struct.getDate(name));
      }
 else       if (type.getCode() == Code.FLOAT64) {
        mutationBuilder.set(name).to((double)struct.getDouble(name));
      }
 else       if (type.getCode() == Code.TIMESTAMP) {
        mutationBuilder.set(name).to((Timestamp)struct.getTimestamp(name));
      }
 else       if (type.getCode() == Code.INT64) {
        mutationBuilder.set(name).to((long)struct.getLong(name));
      }
 else       if (type.getCode() == Code.ARRAY) {
        if (type.getArrayElementType().getCode() == Code.STRING) {
          mutationBuilder.set(name).toStringArray(struct.getStringList(name));
        }
 else         if (type.getArrayElementType().getCode() == Code.BOOL) {
          mutationBuilder.set(name).toBoolArray(struct.getBooleanList(name));
        }
 else         if (type.getArrayElementType().getCode() == Code.BYTES) {
          mutationBuilder.set(name).toBytesArray(struct.getBytesList(name));
        }
 else         if (type.getArrayElementType().getCode() == Code.DATE) {
          mutationBuilder.set(name).toDateArray(struct.getDateList(name));
        }
 else         if (type.getArrayElementType().getCode() == Code.FLOAT64) {
          mutationBuilder.set(name).toFloat64Array(struct.getDoubleList(name));
        }
 else         if (type.getArrayElementType().getCode() == Code.INT64) {
          mutationBuilder.set(name).toInt64Array(struct.getLongArray(name));
        }
 else         if (type.getArrayElementType().getCode() == Code.TIMESTAMP) {
          mutationBuilder.set(name).toTimestampArray(struct.getTimestampList(name));
        }
      }
 else {
        throw new RuntimeException("String_Node_Str" + name + "String_Node_Str"+ type.getCode());
      }
    }
    return mutationBuilder.build();
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str" + e);
  }
}