/* goodG2B() - use GoodSource and BadSink */
  private void goodG2B() throws Throwable {
    byte data;

    /* FIX: Use a hardcoded number that won't cause underflow, overflow, divide by zero, or loss-of-precision issues */
    data = 2;

    CWE191_Integer_Underflow__byte_console_readLine_multiply_81_base baseObject =
        new CWE191_Integer_Underflow__byte_console_readLine_multiply_81_goodG2B();
    baseObject.action(data);
  }
  /* goodB2G() - use BadSource and GoodSink */
  private void goodB2G() throws Throwable {
    byte data;

    /* init data */
    data = -1;

    /* POTENTIAL FLAW: Read data from console with readLine*/
    BufferedReader readerBuffered = null;
    InputStreamReader readerInputStream = null;

    try {
      readerInputStream = new InputStreamReader(System.in, "UTF-8");
      readerBuffered = new BufferedReader(readerInputStream);

      String stringNumber = readerBuffered.readLine();
      if (stringNumber != null) {
        data = Byte.parseByte(stringNumber.trim());
      }
    } catch (IOException exceptIO) {
      IO.logger.log(Level.WARNING, "Error with stream reading", exceptIO);
    } catch (NumberFormatException exceptNumberFormat) {
      IO.logger.log(Level.WARNING, "Error with number parsing", exceptNumberFormat);
    } finally {
      /* clean up stream reading objects */
      try {
        if (readerBuffered != null) {
          readerBuffered.close();
        }
      } catch (IOException exceptIO) {
        IO.logger.log(Level.WARNING, "Error closing BufferedReader", exceptIO);
      } finally {
        try {
          if (readerInputStream != null) {
            readerInputStream.close();
          }
        } catch (IOException exceptIO) {
          IO.logger.log(Level.WARNING, "Error closing InputStreamReader", exceptIO);
        }
      }
    }

    CWE191_Integer_Underflow__byte_console_readLine_multiply_81_base baseObject =
        new CWE191_Integer_Underflow__byte_console_readLine_multiply_81_goodB2G();
    baseObject.action(data);
  }