code: private ValueUnitWrapper normalizeMassUnit(final double value, final String unit)
              throws UnknownUnitException {
          Matcher matcher = mMassUnitPatter.matcher(unit);
          if (matcher.find()) {
  
              double normalizationFactor = 1.0;
  
              String numeratorSIPrefix = matcher.group(1);
              Double numeratorFactor = getSIFactor(numeratorSIPrefix);
              if (numeratorFactor != null) {
                  normalizationFactor *= numeratorFactor;
              }
  
              String denominatorSIPrefix = matcher.group(3);
              String denominatorUnit = matcher.group(4);
              Double denominatorFactor = getSIFactor(denominatorSIPrefix);
              if (denominatorFactor != null) {
                  int power = (denominatorUnit.endsWith("3")) ? 3 : 1;
                  normalizationFactor /= Math.pow(denominatorFactor, power);
              }
  
              if (denominatorUnit.equals("l") || denominatorUnit.equals("L")) {
                  normalizationFactor *= 1000;
              }
  
              assert mSIPrefixes.get("kilo") != null : "kilo seems not to be in the table !";
              double normalizedValue = (normalizationFactor * value) / mSIPrefixes.get("kilo");
              return new ValueUnitWrapper(normalizedValue, MASS_NORMALIZED_UNIT);
  
          } else {
              throw new UnknownUnitException(unit);
          }
      }
docs: deals with the normalization of unit confronting weight and volume