code: public String toProperString() {
          if (toProperString == null) {
              if (numerator == 0) {
                  toProperString = "0";
              } else if (numerator == denominator) {
                  toProperString = "1";
              } else if (numerator == -1 * denominator) {
                  toProperString = "-1";
              } else if ((numerator > 0 ? -numerator : numerator) < -denominator) {
                  // note that we do the magnitude comparison test above with
                  // NEGATIVE (not positive) numbers, since negative numbers
                  // have a larger range. otherwise numerator==Integer.MIN_VALUE
                  // is handled incorrectly.
                  final int properNumerator = getProperNumerator();
                  if (properNumerator == 0) {
                      toProperString = Integer.toString(getProperWhole());
                  } else {
                      toProperString = getProperWhole() + " " + properNumerator + "/" + getDenominator();
                  }
              } else {
                  toProperString = getNumerator() + "/" + getDenominator();
              }
          }
          return toProperString;
      }
docs: <p>Gets the fraction as a proper <code>String</code> in the format X Y/Z.</p>
  
  <p>The format used in '<i>wholeNumber</i> <i>numerator</i>/<i>denominator</i>'.
  If the whole number is zero it will be omitted. If the numerator is zero,
  only the whole number is returned.</p>
  
  @return a <code>String</code> form of the fraction