code: protected StringWithUoM eval(final Object[] _values)
      {
          final StringWithUoM ret;
          if ((_values == null) || (_values.length == 0) || (_values.length < 2))  {
              ret = null;
          } else  {
              final String value;
              if ((_values[0] instanceof String) && !((String) _values[0]).isEmpty()) {
                  value = (String) _values[0];
              } else if (_values[0] != null) {
                  value =  _values[0].toString();
              } else  {
                  value = null;
              }
  
              final UoM uom;
              if (_values[1] instanceof UoM) {
                  uom = (UoM) _values[1];
              } else if ((_values[1] instanceof String) && (((String) _values[1]).length() > 0)) {
                  uom = Dimension.getUoM(Long.parseLong((String) _values[1]));
              } else if (_values[1] instanceof Number) {
                  uom = Dimension.getUoM(((Number) _values[1]).longValue());
              } else  {
                  uom = null;
              }
              ret = new StringWithUoM(value, uom);
          }
          return ret;
      }
docs: The localized string and the internal string value are equal. So the
  internal value can be set directly with method {@link #setValue}.
  
  @param _values   values to evaluate
  @return string representation for the <code>_values</code>