/**
  * Create an instance of the Picker (used internally)
  *
  * @param reference an (optional) user-defined reference, helpful when tracking multiple Pickers
  * @param themeResId the style resource ID for theming
  * @param minNumber (optional) the minimum possible number
  * @param maxNumber (optional) the maximum possible number
  * @param plusMinusVisibility (optional) View.VISIBLE, View.INVISIBLE, or View.GONE
  * @param decimalVisibility (optional) View.VISIBLE, View.INVISIBLE, or View.GONE
  * @param labelText (optional) text to add as a label
  * @return a Picker!
  */
 public static NumberPickerDialogFragment newInstance(
     int reference,
     int themeResId,
     BigDecimal minNumber,
     BigDecimal maxNumber,
     Integer plusMinusVisibility,
     Integer decimalVisibility,
     String labelText,
     Integer currentNumberValue,
     Double currentDecimalValue,
     Integer currentNumberSign) {
   final NumberPickerDialogFragment frag = new NumberPickerDialogFragment();
   Bundle args = new Bundle();
   args.putInt(REFERENCE_KEY, reference);
   args.putInt(THEME_RES_ID_KEY, themeResId);
   if (minNumber != null) {
     args.putSerializable(MIN_NUMBER_KEY, minNumber);
   }
   if (maxNumber != null) {
     args.putSerializable(MAX_NUMBER_KEY, maxNumber);
   }
   if (plusMinusVisibility != null) {
     args.putInt(PLUS_MINUS_VISIBILITY_KEY, plusMinusVisibility);
   }
   if (decimalVisibility != null) {
     args.putInt(DECIMAL_VISIBILITY_KEY, decimalVisibility);
   }
   if (labelText != null) {
     args.putString(LABEL_TEXT_KEY, labelText);
   }
   if (currentNumberValue != null) {
     args.putInt(CURRENT_NUMBER_KEY, currentNumberValue);
   }
   if (currentDecimalValue != null) {
     args.putDouble(CURRENT_DECIMAL_KEY, currentDecimalValue);
   }
   if (currentNumberSign != null) {
     args.putInt(CURRENT_SIGN_KEY, currentNumberSign);
   }
   frag.setArguments(args);
   return frag;
 }