New Branch for Java 6/7

Signed-off-by: Werner Keil <werner.keil@gmx.net>
diff --git a/.gitignore b/.gitignore
index bf13b40..74c1e3e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
-target/
-eclipse_config/
-.settings/
-thirdparty/
-bin/
-*.class
+target/

+eclipse_config/

+.settings/

+thirdparty/

+bin/

+*.class

diff --git a/bundles/.gitignore b/bundles/.gitignore
index 834befa..95cea85 100644
--- a/bundles/.gitignore
+++ b/bundles/.gitignore
@@ -1,3 +1,3 @@
-/src
-/.settings
-/target
+/src

+/.settings

+/target

diff --git a/bundles/org.eclipse.uomo.business.tests/.classpath b/bundles/org.eclipse.uomo.business.tests/.classpath
index 0b1bcf9..9bc33d3 100644
--- a/bundles/org.eclipse.uomo.business.tests/.classpath
+++ b/bundles/org.eclipse.uomo.business.tests/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.business.tests/.gitignore b/bundles/org.eclipse.uomo.business.tests/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/bundles/org.eclipse.uomo.business.tests/.gitignore
+++ b/bundles/org.eclipse.uomo.business.tests/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/bundles/org.eclipse.uomo.business.tests/.settings/.gitignore b/bundles/org.eclipse.uomo.business.tests/.settings/.gitignore
index 0924da4..c14d360 100644
--- a/bundles/org.eclipse.uomo.business.tests/.settings/.gitignore
+++ b/bundles/org.eclipse.uomo.business.tests/.settings/.gitignore
@@ -1 +1 @@
-/org.eclipse.m2e.core.prefs
+/org.eclipse.m2e.core.prefs

diff --git a/bundles/org.eclipse.uomo.business.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.business.tests/META-INF/MANIFEST.MF
index 5767b13..8f1cb1a 100644
--- a/bundles/org.eclipse.uomo.business.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.business.tests/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UOMo Business Tests
-Bundle-SymbolicName: org.eclipse.uomo.business.tests
-Bundle-Version: 0.7.0.qualifier
-Bundle-Vendor: Eclipse Org
-Fragment-Host: org.eclipse.uomo.business;bundle-version="0.7.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Require-Bundle: org.junit;bundle-version="4.11.0"
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UOMo Business Tests

+Bundle-SymbolicName: org.eclipse.uomo.business.tests

+Bundle-Version: 0.7.0.qualifier

+Bundle-Vendor: Eclipse Org

+Fragment-Host: org.eclipse.uomo.business;bundle-version="0.7.0"

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Require-Bundle: org.junit;bundle-version="4.11.0"

diff --git a/bundles/org.eclipse.uomo.business.tests/build.properties b/bundles/org.eclipse.uomo.business.tests/build.properties
index 34d2e4d..41eb6ad 100644
--- a/bundles/org.eclipse.uomo.business.tests/build.properties
+++ b/bundles/org.eclipse.uomo.business.tests/build.properties
@@ -1,4 +1,4 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .

diff --git a/bundles/org.eclipse.uomo.business/.classpath b/bundles/org.eclipse.uomo.business/.classpath
index a625c7f..23d1b61 100644
--- a/bundles/org.eclipse.uomo.business/.classpath
+++ b/bundles/org.eclipse.uomo.business/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/main/java/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/main/java/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.business/.gitignore b/bundles/org.eclipse.uomo.business/.gitignore
index e7da900..1a315ce 100644
--- a/bundles/org.eclipse.uomo.business/.gitignore
+++ b/bundles/org.eclipse.uomo.business/.gitignore
@@ -1,3 +1,3 @@
-/target
-/.settings
-/target
+/target

+/.settings

+/target

diff --git a/bundles/org.eclipse.uomo.business/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.business/META-INF/MANIFEST.MF
index ad457ac..c6b0579 100644
--- a/bundles/org.eclipse.uomo.business/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.business/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UOMo Business
-Bundle-SymbolicName: org.eclipse.uomo.business
-Bundle-Version: 0.7.0.qualifier
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.uomo.core;bundle-version="0.7.0",
- org.eclipse.uomo.units;bundle-version="0.5.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UOMo Business

+Bundle-SymbolicName: org.eclipse.uomo.business

+Bundle-Version: 0.7.0.qualifier

+Bundle-Vendor: Eclipse.org

+Require-Bundle: org.eclipse.uomo.core;bundle-version="0.7.0",

+ org.eclipse.uomo.units;bundle-version="0.5.0"

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyAmount.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyAmount.java
index e62041b..dfb8d2c 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyAmount.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyAmount.java
@@ -1,713 +1,713 @@
-/**
- * Copyright (c) 2005, 2014, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.business.money;
-
-import java.math.BigInteger;
-import java.math.MathContext;
-import java.text.FieldPosition;
-import java.text.NumberFormat;
-
-import org.eclipse.uomo.business.internal.CurrencyUnit;
-import org.eclipse.uomo.business.internal.MonetaryAmount;
-import org.eclipse.uomo.business.internal.MonetaryOperator;
-import org.eclipse.uomo.business.types.IMoney;
-import org.eclipse.uomo.core.UOMoRuntimeException;
-import org.eclipse.uomo.units.AbstractConverter;
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.QuantityAmount;
-import org.eclipse.uomo.units.impl.converter.RationalConverter;
-import org.unitsofmeasurement.unit.IncommensurableException;
-import org.unitsofmeasurement.unit.UnconvertibleException;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-import com.ibm.icu.math.BigDecimal;
-import com.ibm.icu.util.Currency;
-
-/**
- * This class represents an amount of money specified in a given
- * {@link Currency} (convenience method).
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:units@catmedia.us">Werner Keil</a>
- * @version 0.7, $Date: 2014-08-03 $
- */
-public class MoneyAmount extends QuantityAmount<IMoney> implements IMoney, MonetaryAmount,
-		Comparable<MonetaryAmount> {
-
-	/**
-	 * Holds the base unit for money quantities (symbol "$").
-	 */
-	public final static MoneyUnit<IMoney> UNIT = new MoneyUnit<IMoney>(
-			"$");
-
-	/**
-	 * Creates a money amount always on the heap independently from the current
-	 * {@link javolution.context.AllocatorContext allocator context}. To allow
-	 * for custom object allocation policies, static factory methods
-	 * <code>valueOf(...)</code> are recommended.
-	 * 
-	 * @param value
-	 *            the value stated in the specified currency.
-	 * @param currency
-	 *            the currency in which the value is stated.
-	 */
-	public MoneyAmount(Number value, MoneyUnit unit) {
-		super(value, unit);
-	}
-
-	/**
-	 * Returns the money amount corresponding to the specified Number value
-	 * and currency.
-	 * 
-	 * @param value
-	 *            the value stated in the specified currency.
-	 * @param currency
-	 *            the currency in which the value is stated.
-	 * @return the corresponding amount.
-	 */
-	public static MoneyAmount of(Number value, CurrencyUnit currency) {
-		return new MoneyAmount(value, (MoneyUnit)currency);
-	}
-	
-	/**
-	 * Returns the money amount corresponding to the specified Number value
-	 * and currency.
-	 * 
-	 * @param value
-	 *            the value stated in the specified currency.
-	 * @param currency
-	 *            the currency in which the value is stated.
-	 * @return the corresponding amount.
-	 */
-//	static MoneyAmount of(Number value, java.util.Currency currency) {
-//		MoneyAmount amount = new MoneyAmount(value, currency);
-//		return amount;
-//	}
-
-	/**
-	 * Returns the money amount corresponding to the specified Number value
-	 * and currency.
-	 * 
-	 * @param value
-	 *            the value stated in the specified currency.
-	 * @param currency
-	 *            the currency in which the value is stated.
-	 * @return the corresponding amount.
-	 */
-	public static MoneyAmount of(Number value, Unit<?> currency) {
-		return new MoneyAmount(value, (MoneyUnit) currency);
-	}
-
-	/**
-	 * Returns the money amount corresponding to the specified value and cents.
-	 * 
-	 * @param value
-	 *            the integer value in the specified currency.
-	 * @param cents
-	 *            the cents value in the specified currency.
-	 * @param currency
-	 *            the currency in which the value and cents are stated.
-	 * @return the corresponding amount.
-	 */
-	public static MoneyAmount of(long value, int cents, Currency currency) {
-		return new MoneyAmount(BigDecimal.valueOf(value * 100
-				+ cents, -2), (MoneyUnit) currency);
-	}
-
-	/**
-	 * Returns the money amount corresponding to the specified generic amount.
-	 * 
-	 * @param amount
-	 *            the raw amount.
-	 * @return the corresponding money amount stated in an existing
-	 *         {@link Currency}.
-	 * @throws ClassCastException
-	 *             if the SI unit of the specified amount is not a
-	 *             {@link Currency}.
-	 */
-	public static MoneyAmount of(QuantityAmount<IMoney> amount) {
-		// MoneyAmount amountSI = amount.toSI();
-		return MoneyAmount.of(BigDecimal.valueOf(amount.getValue()
-				.doubleValue()), amount.unit().getSystemUnit());
-	}
-
-	
-	/**
-	 * Returns the money amount corresponding to the specified Number value
-	 * and currency code.
-	 * 
-	 * @param value
-	 *            the value stated in the specified currency.
-	 * @param currency
-	 *            the currency in which the value is stated.
-	 * @return the corresponding amount.
-	 */
-	public static MoneyAmount of(String code, Number value) {
-		return new MoneyAmount(value, MoneyUnit.of(code));
-	}
-	
-	/**
-	 * Overrides the default {@link #toString()} to show only the currency
-	 * {@link Currency#getFractionDigits() fraction digits} of the associated
-	 * currency (e.g. rounding to closest cents).
-	 * 
-	 * @return the string representation of this money amount.
-	 */
-	public String toStringLocale() {
-		BigDecimal value = (BigDecimal) this.getNumber();
-		// int digits = ((Currency) this.getUnit()).getDefaultFractionDigits();
-		// int exponent = value.getExponent();
-		// LargeInteger significand = value.getSignificand();
-		// int scale = exponent + digits;
-		// significand = significand.E(scale);
-		// exponent -= scale;
-		// value = BigDecimal.valueOf(significand, exponent);
-		NumberFormat numberFormat = NumberFormat.getInstance();
-		StringBuffer tmp = new StringBuffer();
-		numberFormat.format(value, tmp, new FieldPosition(0));
-		tmp.append(' ');
-		tmp.append(this.unit().toString());
-		return tmp.toString();
-	}
-
-	// public MoneyAmount opposite() {
-	// return MoneyAmount.valueOf(_value.opposite(), getCurrency());
-	// }
-
-	protected MoneyAmount plus(IMoney that) {
-		// Measure<BigDecimal, ?> amount = that.to((Unit) getCurrency());
-		return MoneyAmount.of(this.getNumber().doubleValue()
-				+ that.value().doubleValue(), getCurrency());
-	}
-	
-	protected MoneyAmount plus(MoneyAmount that) {
-		// Measure<BigDecimal, ?> amount = that.to((Unit) getCurrency());
-		return MoneyAmount.of(this.getNumber().doubleValue()
-				+ that.getNumber().doubleValue(), getCurrency());
-	}
-
-	protected MoneyAmount minus(MoneyAmount that) {
-		// MoneyAmount amount = that.to((Unit) getCurrency());
-		return MoneyAmount.of(this.getNumber().doubleValue()
-				- that.getNumber().doubleValue(), getCurrency());
-	}
-
-	public MoneyAmount multiply(Number that) {
-		return MoneyAmount.of(
-				getNumber().doubleValue() * that.doubleValue(), getCurrency());
-	}
-
-	public MoneyAmount multiply(long n) {
-		return MoneyAmount.of(getNumber().longValue() * n,
-				getCurrency());
-	}
-
-	public MoneyAmount multiply(MonetaryAmount that) {
-		MoneyAmount ma = (MoneyAmount)that;
-		return times(ma);
-	}
-	
-	protected MoneyAmount times(MoneyAmount that) {
-		Unit<?> unit = unit().multiply(that.unit());
-		return MoneyAmount.of(((BigDecimal) getNumber())
-				.multiply((BigDecimal) that.getNumber()), unit);
-	}
-
-	public MoneyAmount pow(int exp) {
-		return MoneyAmount.of(((BigDecimal) getNumber()).pow(BigDecimal
-				.valueOf(exp)), unit().pow(exp));
-	}
-
-	// protected MoneyAmount inverse() {
-	// return MoneyAmount.valueOf(((BigDecimal) getNumber()).inverse(),
-	// unit().inverse());
-	// }
-
-	public MoneyAmount divide(long n) {
-		return MoneyAmount.of(getNumber().longValue() / n,
-				getCurrency());
-	}
-
-	protected MoneyAmount divide(MoneyAmount that) {
-		Unit<?> unit = unit().divide(that.unit());
-		return MoneyAmount.of(((BigDecimal) getNumber())
-				.divide((BigDecimal) that.getNumber()), unit);
-	}
-
-	public MoneyAmount copy() {
-		return MoneyAmount.of(getNumber(), getCurrency());
-	}
-
-	/**
-	 * Get the unit (convenience to avoid cast).
-	 * 
-	 * @draft UOMo 0.5
-	 * @provisional This API might change or be removed in a future release.
-	 */
-	@SuppressWarnings("unchecked")
-	public MoneyUnit<IMoney> unit() {
-		return (MoneyUnit<IMoney>) getUnit();
-	}
-
-	public int compareTo(IMoney o) {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	public double doubleValue(Unit<IMoney> unit) {
-		Unit<IMoney> myUnit = unit();
-		try {
-			UnitConverter converter = unit.getConverterToAny(myUnit);
-			return converter.convert(getNumber().doubleValue());
-		} catch (UnconvertibleException e) {
-			throw e;
-		} catch (IncommensurableException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		}
-	}
-
-	public long longValue(Unit<IMoney> unit) throws ArithmeticException {
-		Unit<IMoney> myUnit = unit();
-		try {
-			UnitConverter converter = unit.getConverterToAny(myUnit);
-			return (converter.convert(BigDecimal.valueOf(super.getNumber()
-					.longValue())).longValue());
-		} catch (UnconvertibleException e) {
-			throw e;
-		} catch (IncommensurableException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		}
-	}
-
-	public IMeasure<IMoney> divide(IMeasure<?> that) {
-		return divide((MoneyAmount) that);
-	}
-
-	public IMeasure<IMoney> multiply(IMeasure<?> that) {
-		return multiply((MonetaryAmount) that);
-	}
-
-	public IMeasure<IMoney> to(Unit<IMoney> unit) {
-		return to(unit, MathContext.DECIMAL32);
-	}
-
-	protected IMeasure<IMoney> to(Unit<IMoney> unit, MathContext ctx) {
-		if (this.unit().equals(unit))
-			return this;
-		UnitConverter cvtr = this.unit().getConverterTo(unit);
-		if (cvtr == AbstractConverter.IDENTITY)
-			return (IMeasure<IMoney>) of(this.getNumber(), unit);
-		return (IMeasure<IMoney>) of(convert(this.getNumber(), cvtr, ctx),
-				unit);
-	}
-
-	// Try to convert the specified value.
-	private static Number convert(Number value, UnitConverter cvtr,
-			MathContext ctx) {
-		if (cvtr instanceof RationalConverter) { // Try converting through Field
-													// methods.
-			RationalConverter rCvtr = (RationalConverter) cvtr;
-			BigInteger dividend = rCvtr.getDividend();
-			BigInteger divisor = rCvtr.getDivisor();
-			if (dividend.abs().compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)
-				throw new ArithmeticException("Multiplier overflow");
-			if (divisor.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)
-				throw new ArithmeticException("Divisor overflow");
-			return (value.longValue() * dividend.longValue())
-					/ (divisor.longValue());
-		} else if (cvtr instanceof AbstractConverter.Compound
-				&& cvtr.isLinear()) { // Do it in two parts.
-			AbstractConverter.Compound compound = (AbstractConverter.Compound) cvtr;
-			Number firstConversion = convert(value, compound.getRight(), ctx);
-			Number secondConversion = convert(firstConversion,
-					compound.getLeft(), ctx);
-			return secondConversion;
-		} else { // Try using BigDecimal as intermediate.
-			BigDecimal decimalValue = BigDecimal.valueOf(value.doubleValue());
-			Number newValue = cvtr.convert(decimalValue.toBigDecimal(), ctx);
-			return newValue;
-			// if (((FieldNumber)value) instanceof Decimal)
-			// return (N)((FieldNumber)Decimal.valueOf(newValue));
-			// if (((FieldNumber)value) instanceof Float64)
-			// return (N)((FieldNumber)Float64.valueOf(newValue.doubleValue()));
-			// throw new ArithmeticException(
-			// "Generic amount conversion not implemented for amount of type " +
-			// value.getClass());
-		}
-	}
-	
-	private final BigDecimal bigNumber() {
-		if (getNumber() instanceof BigDecimal) {
-			return (BigDecimal)getNumber();
-		} else {
-			throw new UOMoRuntimeException(
-					new IllegalArgumentException("Cannot represent as BigDecimal"));
-		}
-	}
-
-	/**
-	 * Generate a 'preference neutral' string from Money value.
-	 * 
-	 * @return java.lang.String
-	 */
-	public String serialize() {
-		return null;
-	}
-
-	public Number value() {
-		return getNumber();
-	}
-
-	public IMeasure<? extends IMeasure<IMoney>> inverse() {
-		final IMeasure<? extends IMeasure<IMoney>> m = of(value(), unit()
-				.inverse());
-		return m;
-	}
-
-	public int compareTo(MonetaryAmount o) {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	 
-	public MonetaryAmount abs() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public MonetaryAmount add(Number augend) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount divide(MonetaryAmount divisor) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount divide(Number divisor) {
-		// TODO Auto-generated method stub
-		//return of((BigDecimal)value()).divide((BigDecimal)divisor));
-		return null;
-	}
-
-	 
-	public MonetaryAmount[] divideAndRemainder(MonetaryAmount divisor) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount[] divideAndRemainder(Number divisor) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount divideToIntegralValue(MonetaryAmount divisor) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount divideToIntegralValue(Number divisor) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount negate() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount plus() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public MonetaryAmount subtract(Number subtrahend) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount ulp() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount remainder(MonetaryAmount divisor) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount remainder(Number divisor) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount scaleByPowerOfTen(int n) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public boolean isZero() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isPositive() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isPositiveOrZero() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isNegative() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isNegativeOrZero() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public MonetaryAmount from(Number amount) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public MonetaryAmount from(CurrencyUnit currency, Number amount) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	 
-	public MonetaryAmount with(MonetaryOperator operator) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#getScale()
-	 */
-	public int getScale() {
-		return this.bigNumber().scale();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#getPrecision()
-	 */
-	public int getPrecision() {
-		return bigNumber().toBigDecimal().precision();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#intValue()
-	 */
-	public int intValue() {
-		return this.getNumber().intValue();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#intValueExact()
-	 */
-	public int intValueExact() {
-		return bigNumber().intValueExact();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#longValue()
-	 */
-	public long longValue() {
-		return this.getNumber().longValue();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#longValueExact()
-	 */
-	public long longValueExact() {
-		return bigNumber().longValueExact();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#floatValue()
-	 */
-	public float floatValue() {
-		return this.getNumber().floatValue();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#doubleValue()
-	 */
-	public double doubleValue() {
-		return this.getNumber().doubleValue();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#byteValue()
-	 */
-	public byte byteValue() {
-		return this.getNumber().byteValue();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#shortValue()
-	 */
-	public short shortValue() {
-		return getNumber().shortValue();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#shortValueExact()
-	 */
-	public short shortValueExact() {
-		return bigNumber().shortValueExact();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#signum()
-	 */
-
-	public int signum() {
-		return bigNumber().signum();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#toEngineeringString()
-	 */
-	public String toEngineeringString() {
-		return getCurrency().getCurrencyCode() + ' '
-				+ bigNumber().toBigDecimal().toEngineeringString();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see MonetaryAmount#toPlainString()
-	 */
-	public String toPlainString() {
-		return getCurrency().getCurrencyCode() + ' '
-				+ bigNumber().toBigDecimal().toPlainString();
-	}
-	 
-	public boolean isLessThan(MonetaryAmount amount) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isLessThanOrEqualTo(MonetaryAmount amount) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isGreaterThan(MonetaryAmount amount) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isGreaterThanOrEqualTo(MonetaryAmount amount) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isEqualTo(MonetaryAmount amount) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	 
-	public boolean isNotEqualTo(MonetaryAmount amount) {
-		return !getNumber().equals(amount);
-	}
-
-	public <T> T asType(Class<T> type) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public Class<?> getNumberType() {
-		return getNumber().getClass();
-	}
-
-	public CurrencyUnit getCurrency() {
-		return (CurrencyUnit)unit();
-	}
-
-	@Override
-	public IMoney add(IMeasure<IMoney> that) {
-		return plus((IMoney) that);
-	}
-
-	@Override
-	public MonetaryAmount add(MonetaryAmount augend) {
-		return plus((MoneyAmount) augend);
-	}
-
-	@Override
-	public IMeasure<IMoney> subtract(IMeasure<IMoney> that) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public MonetaryAmount subtract(MonetaryAmount subtrahend) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+/**

+ * Copyright (c) 2005, 2014, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.business.money;

+

+import java.math.BigInteger;

+import java.math.MathContext;

+import java.text.FieldPosition;

+import java.text.NumberFormat;

+

+import org.eclipse.uomo.business.internal.CurrencyUnit;

+import org.eclipse.uomo.business.internal.MonetaryAmount;

+import org.eclipse.uomo.business.internal.MonetaryOperator;

+import org.eclipse.uomo.business.types.IMoney;

+import org.eclipse.uomo.core.UOMoRuntimeException;

+import org.eclipse.uomo.units.AbstractConverter;

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.QuantityAmount;

+import org.eclipse.uomo.units.impl.converter.RationalConverter;

+import org.unitsofmeasurement.unit.IncommensurableException;

+import org.unitsofmeasurement.unit.UnconvertibleException;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+import com.ibm.icu.math.BigDecimal;

+import com.ibm.icu.util.Currency;

+

+/**

+ * This class represents an amount of money specified in a given

+ * {@link Currency} (convenience method).

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:units@catmedia.us">Werner Keil</a>

+ * @version 0.7, $Date: 2014-08-03 $

+ */

+public class MoneyAmount extends QuantityAmount<IMoney> implements IMoney, MonetaryAmount,

+		Comparable<MonetaryAmount> {

+

+	/**

+	 * Holds the base unit for money quantities (symbol "$").

+	 */

+	public final static MoneyUnit<IMoney> UNIT = new MoneyUnit<IMoney>(

+			"$");

+

+	/**

+	 * Creates a money amount always on the heap independently from the current

+	 * {@link javolution.context.AllocatorContext allocator context}. To allow

+	 * for custom object allocation policies, static factory methods

+	 * <code>valueOf(...)</code> are recommended.

+	 * 

+	 * @param value

+	 *            the value stated in the specified currency.

+	 * @param currency

+	 *            the currency in which the value is stated.

+	 */

+	public MoneyAmount(Number value, MoneyUnit unit) {

+		super(value, unit);

+	}

+

+	/**

+	 * Returns the money amount corresponding to the specified Number value

+	 * and currency.

+	 * 

+	 * @param value

+	 *            the value stated in the specified currency.

+	 * @param currency

+	 *            the currency in which the value is stated.

+	 * @return the corresponding amount.

+	 */

+	public static MoneyAmount of(Number value, CurrencyUnit currency) {

+		return new MoneyAmount(value, (MoneyUnit)currency);

+	}

+	

+	/**

+	 * Returns the money amount corresponding to the specified Number value

+	 * and currency.

+	 * 

+	 * @param value

+	 *            the value stated in the specified currency.

+	 * @param currency

+	 *            the currency in which the value is stated.

+	 * @return the corresponding amount.

+	 */

+//	static MoneyAmount of(Number value, java.util.Currency currency) {

+//		MoneyAmount amount = new MoneyAmount(value, currency);

+//		return amount;

+//	}

+

+	/**

+	 * Returns the money amount corresponding to the specified Number value

+	 * and currency.

+	 * 

+	 * @param value

+	 *            the value stated in the specified currency.

+	 * @param currency

+	 *            the currency in which the value is stated.

+	 * @return the corresponding amount.

+	 */

+	public static MoneyAmount of(Number value, Unit<?> currency) {

+		return new MoneyAmount(value, (MoneyUnit) currency);

+	}

+

+	/**

+	 * Returns the money amount corresponding to the specified value and cents.

+	 * 

+	 * @param value

+	 *            the integer value in the specified currency.

+	 * @param cents

+	 *            the cents value in the specified currency.

+	 * @param currency

+	 *            the currency in which the value and cents are stated.

+	 * @return the corresponding amount.

+	 */

+	public static MoneyAmount of(long value, int cents, Currency currency) {

+		return new MoneyAmount(BigDecimal.valueOf(value * 100

+				+ cents, -2), (MoneyUnit) currency);

+	}

+

+	/**

+	 * Returns the money amount corresponding to the specified generic amount.

+	 * 

+	 * @param amount

+	 *            the raw amount.

+	 * @return the corresponding money amount stated in an existing

+	 *         {@link Currency}.

+	 * @throws ClassCastException

+	 *             if the SI unit of the specified amount is not a

+	 *             {@link Currency}.

+	 */

+	public static MoneyAmount of(QuantityAmount<IMoney> amount) {

+		// MoneyAmount amountSI = amount.toSI();

+		return MoneyAmount.of(BigDecimal.valueOf(amount.getValue()

+				.doubleValue()), amount.unit().getSystemUnit());

+	}

+

+	

+	/**

+	 * Returns the money amount corresponding to the specified Number value

+	 * and currency code.

+	 * 

+	 * @param value

+	 *            the value stated in the specified currency.

+	 * @param currency

+	 *            the currency in which the value is stated.

+	 * @return the corresponding amount.

+	 */

+	public static MoneyAmount of(String code, Number value) {

+		return new MoneyAmount(value, MoneyUnit.of(code));

+	}

+	

+	/**

+	 * Overrides the default {@link #toString()} to show only the currency

+	 * {@link Currency#getFractionDigits() fraction digits} of the associated

+	 * currency (e.g. rounding to closest cents).

+	 * 

+	 * @return the string representation of this money amount.

+	 */

+	public String toStringLocale() {

+		BigDecimal value = (BigDecimal) this.getNumber();

+		// int digits = ((Currency) this.getUnit()).getDefaultFractionDigits();

+		// int exponent = value.getExponent();

+		// LargeInteger significand = value.getSignificand();

+		// int scale = exponent + digits;

+		// significand = significand.E(scale);

+		// exponent -= scale;

+		// value = BigDecimal.valueOf(significand, exponent);

+		NumberFormat numberFormat = NumberFormat.getInstance();

+		StringBuffer tmp = new StringBuffer();

+		numberFormat.format(value, tmp, new FieldPosition(0));

+		tmp.append(' ');

+		tmp.append(this.unit().toString());

+		return tmp.toString();

+	}

+

+	// public MoneyAmount opposite() {

+	// return MoneyAmount.valueOf(_value.opposite(), getCurrency());

+	// }

+

+	protected MoneyAmount plus(IMoney that) {

+		// Measure<BigDecimal, ?> amount = that.to((Unit) getCurrency());

+		return MoneyAmount.of(this.getNumber().doubleValue()

+				+ that.value().doubleValue(), getCurrency());

+	}

+	

+	protected MoneyAmount plus(MoneyAmount that) {

+		// Measure<BigDecimal, ?> amount = that.to((Unit) getCurrency());

+		return MoneyAmount.of(this.getNumber().doubleValue()

+				+ that.getNumber().doubleValue(), getCurrency());

+	}

+

+	protected MoneyAmount minus(MoneyAmount that) {

+		// MoneyAmount amount = that.to((Unit) getCurrency());

+		return MoneyAmount.of(this.getNumber().doubleValue()

+				- that.getNumber().doubleValue(), getCurrency());

+	}

+

+	public MoneyAmount multiply(Number that) {

+		return MoneyAmount.of(

+				getNumber().doubleValue() * that.doubleValue(), getCurrency());

+	}

+

+	public MoneyAmount multiply(long n) {

+		return MoneyAmount.of(getNumber().longValue() * n,

+				getCurrency());

+	}

+

+	public MoneyAmount multiply(MonetaryAmount that) {

+		MoneyAmount ma = (MoneyAmount)that;

+		return times(ma);

+	}

+	

+	protected MoneyAmount times(MoneyAmount that) {

+		Unit<?> unit = unit().multiply(that.unit());

+		return MoneyAmount.of(((BigDecimal) getNumber())

+				.multiply((BigDecimal) that.getNumber()), unit);

+	}

+

+	public MoneyAmount pow(int exp) {

+		return MoneyAmount.of(((BigDecimal) getNumber()).pow(BigDecimal

+				.valueOf(exp)), unit().pow(exp));

+	}

+

+	// protected MoneyAmount inverse() {

+	// return MoneyAmount.valueOf(((BigDecimal) getNumber()).inverse(),

+	// unit().inverse());

+	// }

+

+	public MoneyAmount divide(long n) {

+		return MoneyAmount.of(getNumber().longValue() / n,

+				getCurrency());

+	}

+

+	protected MoneyAmount divide(MoneyAmount that) {

+		Unit<?> unit = unit().divide(that.unit());

+		return MoneyAmount.of(((BigDecimal) getNumber())

+				.divide((BigDecimal) that.getNumber()), unit);

+	}

+

+	public MoneyAmount copy() {

+		return MoneyAmount.of(getNumber(), getCurrency());

+	}

+

+	/**

+	 * Get the unit (convenience to avoid cast).

+	 * 

+	 * @draft UOMo 0.5

+	 * @provisional This API might change or be removed in a future release.

+	 */

+	@SuppressWarnings("unchecked")

+	public MoneyUnit<IMoney> unit() {

+		return (MoneyUnit<IMoney>) getUnit();

+	}

+

+	public int compareTo(IMoney o) {

+		// TODO Auto-generated method stub

+		return 0;

+	}

+

+	public double doubleValue(Unit<IMoney> unit) {

+		Unit<IMoney> myUnit = unit();

+		try {

+			UnitConverter converter = unit.getConverterToAny(myUnit);

+			return converter.convert(getNumber().doubleValue());

+		} catch (UnconvertibleException e) {

+			throw e;

+		} catch (IncommensurableException e) {

+			throw new IllegalArgumentException(e.getMessage());

+		}

+	}

+

+	public long longValue(Unit<IMoney> unit) throws ArithmeticException {

+		Unit<IMoney> myUnit = unit();

+		try {

+			UnitConverter converter = unit.getConverterToAny(myUnit);

+			return (converter.convert(BigDecimal.valueOf(super.getNumber()

+					.longValue())).longValue());

+		} catch (UnconvertibleException e) {

+			throw e;

+		} catch (IncommensurableException e) {

+			throw new IllegalArgumentException(e.getMessage());

+		}

+	}

+

+	public IMeasure<IMoney> divide(IMeasure<?> that) {

+		return divide((MoneyAmount) that);

+	}

+

+	public IMeasure<IMoney> multiply(IMeasure<?> that) {

+		return multiply((MonetaryAmount) that);

+	}

+

+	public IMeasure<IMoney> to(Unit<IMoney> unit) {

+		return to(unit, MathContext.DECIMAL32);

+	}

+

+	protected IMeasure<IMoney> to(Unit<IMoney> unit, MathContext ctx) {

+		if (this.unit().equals(unit))

+			return this;

+		UnitConverter cvtr = this.unit().getConverterTo(unit);

+		if (cvtr == AbstractConverter.IDENTITY)

+			return (IMeasure<IMoney>) of(this.getNumber(), unit);

+		return (IMeasure<IMoney>) of(convert(this.getNumber(), cvtr, ctx),

+				unit);

+	}

+

+	// Try to convert the specified value.

+	private static Number convert(Number value, UnitConverter cvtr,

+			MathContext ctx) {

+		if (cvtr instanceof RationalConverter) { // Try converting through Field

+													// methods.

+			RationalConverter rCvtr = (RationalConverter) cvtr;

+			BigInteger dividend = rCvtr.getDividend();

+			BigInteger divisor = rCvtr.getDivisor();

+			if (dividend.abs().compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)

+				throw new ArithmeticException("Multiplier overflow");

+			if (divisor.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)

+				throw new ArithmeticException("Divisor overflow");

+			return (value.longValue() * dividend.longValue())

+					/ (divisor.longValue());

+		} else if (cvtr instanceof AbstractConverter.Compound

+				&& cvtr.isLinear()) { // Do it in two parts.

+			AbstractConverter.Compound compound = (AbstractConverter.Compound) cvtr;

+			Number firstConversion = convert(value, compound.getRight(), ctx);

+			Number secondConversion = convert(firstConversion,

+					compound.getLeft(), ctx);

+			return secondConversion;

+		} else { // Try using BigDecimal as intermediate.

+			BigDecimal decimalValue = BigDecimal.valueOf(value.doubleValue());

+			Number newValue = cvtr.convert(decimalValue.toBigDecimal(), ctx);

+			return newValue;

+			// if (((FieldNumber)value) instanceof Decimal)

+			// return (N)((FieldNumber)Decimal.valueOf(newValue));

+			// if (((FieldNumber)value) instanceof Float64)

+			// return (N)((FieldNumber)Float64.valueOf(newValue.doubleValue()));

+			// throw new ArithmeticException(

+			// "Generic amount conversion not implemented for amount of type " +

+			// value.getClass());

+		}

+	}

+	

+	private final BigDecimal bigNumber() {

+		if (getNumber() instanceof BigDecimal) {

+			return (BigDecimal)getNumber();

+		} else {

+			throw new UOMoRuntimeException(

+					new IllegalArgumentException("Cannot represent as BigDecimal"));

+		}

+	}

+

+	/**

+	 * Generate a 'preference neutral' string from Money value.

+	 * 

+	 * @return java.lang.String

+	 */

+	public String serialize() {

+		return null;

+	}

+

+	public Number value() {

+		return getNumber();

+	}

+

+	public IMeasure<? extends IMeasure<IMoney>> inverse() {

+		final IMeasure<? extends IMeasure<IMoney>> m = of(value(), unit()

+				.inverse());

+		return m;

+	}

+

+	public int compareTo(MonetaryAmount o) {

+		// TODO Auto-generated method stub

+		return 0;

+	}

+

+	 

+	public MonetaryAmount abs() {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	public MonetaryAmount add(Number augend) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount divide(MonetaryAmount divisor) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount divide(Number divisor) {

+		// TODO Auto-generated method stub

+		//return of((BigDecimal)value()).divide((BigDecimal)divisor));

+		return null;

+	}

+

+	 

+	public MonetaryAmount[] divideAndRemainder(MonetaryAmount divisor) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount[] divideAndRemainder(Number divisor) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount divideToIntegralValue(MonetaryAmount divisor) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount divideToIntegralValue(Number divisor) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount negate() {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount plus() {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	public MonetaryAmount subtract(Number subtrahend) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount ulp() {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount remainder(MonetaryAmount divisor) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount remainder(Number divisor) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount scaleByPowerOfTen(int n) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public boolean isZero() {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isPositive() {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isPositiveOrZero() {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isNegative() {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isNegativeOrZero() {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	public MonetaryAmount from(Number amount) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	public MonetaryAmount from(CurrencyUnit currency, Number amount) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	 

+	public MonetaryAmount with(MonetaryOperator operator) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#getScale()

+	 */

+	public int getScale() {

+		return this.bigNumber().scale();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#getPrecision()

+	 */

+	public int getPrecision() {

+		return bigNumber().toBigDecimal().precision();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#intValue()

+	 */

+	public int intValue() {

+		return this.getNumber().intValue();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#intValueExact()

+	 */

+	public int intValueExact() {

+		return bigNumber().intValueExact();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#longValue()

+	 */

+	public long longValue() {

+		return this.getNumber().longValue();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#longValueExact()

+	 */

+	public long longValueExact() {

+		return bigNumber().longValueExact();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#floatValue()

+	 */

+	public float floatValue() {

+		return this.getNumber().floatValue();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#doubleValue()

+	 */

+	public double doubleValue() {

+		return this.getNumber().doubleValue();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#byteValue()

+	 */

+	public byte byteValue() {

+		return this.getNumber().byteValue();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#shortValue()

+	 */

+	public short shortValue() {

+		return getNumber().shortValue();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#shortValueExact()

+	 */

+	public short shortValueExact() {

+		return bigNumber().shortValueExact();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#signum()

+	 */

+

+	public int signum() {

+		return bigNumber().signum();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#toEngineeringString()

+	 */

+	public String toEngineeringString() {

+		return getCurrency().getCurrencyCode() + ' '

+				+ bigNumber().toBigDecimal().toEngineeringString();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see MonetaryAmount#toPlainString()

+	 */

+	public String toPlainString() {

+		return getCurrency().getCurrencyCode() + ' '

+				+ bigNumber().toBigDecimal().toPlainString();

+	}

+	 

+	public boolean isLessThan(MonetaryAmount amount) {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isLessThanOrEqualTo(MonetaryAmount amount) {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isGreaterThan(MonetaryAmount amount) {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isGreaterThanOrEqualTo(MonetaryAmount amount) {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isEqualTo(MonetaryAmount amount) {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+	 

+	public boolean isNotEqualTo(MonetaryAmount amount) {

+		return !getNumber().equals(amount);

+	}

+

+	public <T> T asType(Class<T> type) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	public Class<?> getNumberType() {

+		return getNumber().getClass();

+	}

+

+	public CurrencyUnit getCurrency() {

+		return (CurrencyUnit)unit();

+	}

+

+	@Override

+	public IMoney add(IMeasure<IMoney> that) {

+		return plus((IMoney) that);

+	}

+

+	@Override

+	public MonetaryAmount add(MonetaryAmount augend) {

+		return plus((MoneyAmount) augend);

+	}

+

+	@Override

+	public IMeasure<IMoney> subtract(IMeasure<IMoney> that) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	@Override

+	public MonetaryAmount subtract(MonetaryAmount subtrahend) {

+		// TODO Auto-generated method stub

+		return null;

+	}

 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyConverter.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyConverter.java
index 05f51a8..2372db1 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyConverter.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyConverter.java
@@ -1,287 +1,287 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.business.money;
-
-import static java.util.FormattableFlags.LEFT_JUSTIFY;
-
-import java.math.BigDecimal;
-import java.math.MathContext;
-import java.util.Formattable;
-import java.util.Formatter;
-import java.util.List;
-
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.uomo.business.internal.CurrencyUnit;
-import org.eclipse.uomo.business.internal.ExchangeRate;
-import org.eclipse.uomo.business.internal.Messages;
-import org.eclipse.uomo.business.types.IMoney;
-import org.eclipse.uomo.units.AbstractConverter;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-import com.ibm.icu.util.Currency;
-import com.ibm.icu.util.ULocale;
-
-/**
- * <p>
- * This class represents a converter between two currencies.
- * </p>
- * 
- * <p>
- * Currency converters convert values based upon the current exchange rate
- * {@link Currency#getExchangeRate() exchange rate}. If the
- * {@link Currency#getExchangeRate() exchange rate} from the target currency to
- * the source currency is not set, conversion fails. In others words, the
- * converter from a currency <code>A</code> to a currency <code>B</code> is
- * independant from the converter from <code>B</code> to <code>A</code>.
- * </p>
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:units@catmedia.us">Werner Keil</a>
- * @version 5.3, $Date: 2013-05-25 $
- * @deprecated use JSR 354
- */
-public class MoneyConverter extends AbstractConverter implements Formattable {
-
-	/**
-     * 
-     */
-	private static final long serialVersionUID = -3943843029548497620L;
-
-	/**
-	 * Holds the exchange rate.
-	 */
-	private final ExchangeRate rate;
-
-	private void checkFactor(Number factor) {
-		if (factor == null)
-			throw new UnsupportedOperationException(NLS.bind(
-					Messages.CurrencyConverter_exchangeRate_not_set,
-					rate.getBase(), rate.getTerm())); //$NON-NLS-1$
-	}
-
-	private CurrencyUnit fromJDK(java.util.Currency currency) {
-		// TODO use JDKAdapter
-		return fromICU(Currency.getInstance(currency.getCurrencyCode()));
-	}
-	
-	private CurrencyUnit fromICU(Currency currency) {
-		return MoneyCurrency.of(currency);
-	}
-
-	
-	/**
-	 * Creates the currency converter from the source currency to the target
-	 * currency.
-	 * 
-	 * @param source
-	 *            the source currency.
-	 * @param target
-	 *            the target currency.
-	 * @param factor
-	 *            the multiplier factor from source to target.
-	 * @return the corresponding converter.
-	 */
-	private MoneyConverter(CurrencyUnit source, CurrencyUnit target, Number factor) {
-		rate = new MoneyExchangeRate(source, target, factor);
-	}
-	
-	/**
-	 * Creates the currency converter from the source currency to the target
-	 * currency.
-	 * 
-	 * @param source
-	 *            the source currency.
-	 * @param target
-	 *            the target currency.
-	 * @param factor
-	 *            the multiplier factor from source to target.
-	 * @return the corresponding converter.
-	 */
-	private MoneyConverter(Currency source, Currency target, Number factor) {
-		rate = new MoneyExchangeRate(fromICU(source), fromICU(target), factor);
-	}
-
-	/**
-	 * Creates the currency converter from the source currency to the target
-	 * currency.
-	 * 
-	 * @param source
-	 *            the source currency.
-	 * @param target
-	 *            the target currency.
-	 * @param factor
-	 *            the multiplier factor from source to target.
-	 * @return the corresponding converter.
-	 */
-	@SuppressWarnings("unchecked")
-	public MoneyConverter(Unit<?> source, Unit<IMoney> target,
-			Number factor) {
-		
-			CurrencyUnit defCurrency = MoneyCurrency.of(Currency.getInstance(ULocale.getDefault()));
-			rate = new MoneyExchangeRate(defCurrency, defCurrency, factor);
-		
-	}
-
-	/**
-	 * Creates the currency converter from the source currency to the target
-	 * currency using <strong>JDK</strong> types.
-	 * 
-	 * @param source
-	 *            the source currency (<strong>JDK</strong>).
-	 * @param target
-	 *            the target currency (<strong>JDK</strong>).
-	 * @param factor
-	 *            the multiplier factor from source to target.
-	 * @return the corresponding converter.
-	 */
-	public MoneyConverter(java.util.Currency source,
-			java.util.Currency target, Number factor) {
-		rate = new MoneyExchangeRate(fromJDK(source), fromJDK(target), factor);
-	}
-
-	/**
-	 * Returns the source currency.
-	 * 
-	 * @return the source currency.
-	 */
-	public CurrencyUnit getSource() {
-		return rate.getBase();
-	}
-
-	/**
-	 * Returns the target currency.
-	 * 
-	 * @return the target currency.
-	 */
-	public CurrencyUnit getTarget() {
-		return rate.getTerm();
-	}
-
-	public MoneyConverter inverse() {
-		return new MoneyConverter(getTarget(), getSource(),
-				rate.getFactor());
-	}
-
-	public MoneyConverter negate() {
-		return new MoneyConverter(getSource(), getTarget(), -rate
-				.getFactor().doubleValue());
-	}
-
-	public double convert(double value) {
-		// Number factor = getExchangeRate(rate.getTarget());
-		Number factor = rate.getFactor();
-		checkFactor(factor);
-		return factor.doubleValue() * value;
-	}
-
-	public BigDecimal convert(BigDecimal value, MathContext ctx)
-			throws ArithmeticException {
-		// Number factor = rate.getSource().getExchangeRate(rate.getTarget());
-		Number factor = rate.getFactor();
-		checkFactor(factor);
-		if (factor instanceof BigDecimal)
-			return value.multiply((BigDecimal) factor, ctx);
-		if (factor instanceof Number) {
-			return value.multiply(
-					(BigDecimal.valueOf(((Number) factor).doubleValue())), ctx);
-		} else { // Reverts to double convert.
-			return value
-					.multiply(BigDecimal.valueOf(factor.doubleValue()), ctx);
-		}
-	}
-
-	public Number convert(Number value) {
-		if (value instanceof BigDecimal) {
-			return convert((BigDecimal) value, MathContext.DECIMAL128);
-		} else {
-			return convert(value.doubleValue());
-		}
-	}
-
-	@Override
-	public boolean equals(Object cvtr) {
-		if (!(cvtr instanceof MoneyConverter))
-			return false;
-		MoneyConverter that = (MoneyConverter) cvtr;
-		return this.getSource().equals(that.getSource())
-				&& this.getTarget().equals(that.getTarget());
-	}
-
-	@Override
-	public int hashCode() {
-		return getSource().hashCode() + getTarget().hashCode();
-	}
-
-	@Override
-	public final String toString() {
-		if (getSource().equals(getTarget())) {
-			return getSource().getCurrencyCode();
-		}
-		return String.format(Messages.CurrencyConverter_toString, getSource()
-				.getCurrencyCode(), getTarget().getCurrencyCode());
-	}
-
-	public boolean isLinear() {
-		return true;
-	}
-
-	public UnitConverter concatenate(UnitConverter converter) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public List<UnitConverter> getCompoundConverters() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public boolean isIdentity() {
-		return false;
-	}
-
-	public ExchangeRate getExchangeRate() {
-		return rate;
-	}
-
-	public void formatTo(Formatter fmt, int f, int width, int precision) {
-		StringBuilder sb = new StringBuilder();
-
-		// decide form of name
-		String name = getSource().toString();
-		String symbol = getSource().getCurrencyCode();
-		// if (fmt.locale().equals(Locale.FRANCE))
-		// name = frenchCompanyName;
-		// boolean alternate = (f & ALTERNATE) == ALTERNATE;
-		boolean usesymbol = true; // alternate || (precision != -1 && precision
-									// < 10);
-		String out = (usesymbol ? symbol : name);
-
-		// apply precision
-		if (precision == -1 || out.length() < precision) {
-			// write it all
-			sb.append(out);
-		} else {
-			sb.append(out.substring(0, precision - 1)).append('*');
-		}
-
-		// apply width and justification
-		int len = sb.length();
-		if (len < width)
-			for (int i = 0; i < width - len; i++)
-				if ((f & LEFT_JUSTIFY) == LEFT_JUSTIFY)
-					sb.append(' ');
-				else
-					sb.insert(0, ' ');
-
-		fmt.format(sb.toString());
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.business.money;

+

+import static java.util.FormattableFlags.LEFT_JUSTIFY;

+

+import java.math.BigDecimal;

+import java.math.MathContext;

+import java.util.Formattable;

+import java.util.Formatter;

+import java.util.List;

+

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.uomo.business.internal.CurrencyUnit;

+import org.eclipse.uomo.business.internal.ExchangeRate;

+import org.eclipse.uomo.business.internal.Messages;

+import org.eclipse.uomo.business.types.IMoney;

+import org.eclipse.uomo.units.AbstractConverter;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+import com.ibm.icu.util.Currency;

+import com.ibm.icu.util.ULocale;

+

+/**

+ * <p>

+ * This class represents a converter between two currencies.

+ * </p>

+ * 

+ * <p>

+ * Currency converters convert values based upon the current exchange rate

+ * {@link Currency#getExchangeRate() exchange rate}. If the

+ * {@link Currency#getExchangeRate() exchange rate} from the target currency to

+ * the source currency is not set, conversion fails. In others words, the

+ * converter from a currency <code>A</code> to a currency <code>B</code> is

+ * independant from the converter from <code>B</code> to <code>A</code>.

+ * </p>

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:units@catmedia.us">Werner Keil</a>

+ * @version 5.3, $Date: 2013-05-25 $

+ * @deprecated use JSR 354

+ */

+public class MoneyConverter extends AbstractConverter implements Formattable {

+

+	/**

+     * 

+     */

+	private static final long serialVersionUID = -3943843029548497620L;

+

+	/**

+	 * Holds the exchange rate.

+	 */

+	private final ExchangeRate rate;

+

+	private void checkFactor(Number factor) {

+		if (factor == null)

+			throw new UnsupportedOperationException(NLS.bind(

+					Messages.CurrencyConverter_exchangeRate_not_set,

+					rate.getBase(), rate.getTerm())); //$NON-NLS-1$

+	}

+

+	private CurrencyUnit fromJDK(java.util.Currency currency) {

+		// TODO use JDKAdapter

+		return fromICU(Currency.getInstance(currency.getCurrencyCode()));

+	}

+	

+	private CurrencyUnit fromICU(Currency currency) {

+		return MoneyCurrency.of(currency);

+	}

+

+	

+	/**

+	 * Creates the currency converter from the source currency to the target

+	 * currency.

+	 * 

+	 * @param source

+	 *            the source currency.

+	 * @param target

+	 *            the target currency.

+	 * @param factor

+	 *            the multiplier factor from source to target.

+	 * @return the corresponding converter.

+	 */

+	private MoneyConverter(CurrencyUnit source, CurrencyUnit target, Number factor) {

+		rate = new MoneyExchangeRate(source, target, factor);

+	}

+	

+	/**

+	 * Creates the currency converter from the source currency to the target

+	 * currency.

+	 * 

+	 * @param source

+	 *            the source currency.

+	 * @param target

+	 *            the target currency.

+	 * @param factor

+	 *            the multiplier factor from source to target.

+	 * @return the corresponding converter.

+	 */

+	private MoneyConverter(Currency source, Currency target, Number factor) {

+		rate = new MoneyExchangeRate(fromICU(source), fromICU(target), factor);

+	}

+

+	/**

+	 * Creates the currency converter from the source currency to the target

+	 * currency.

+	 * 

+	 * @param source

+	 *            the source currency.

+	 * @param target

+	 *            the target currency.

+	 * @param factor

+	 *            the multiplier factor from source to target.

+	 * @return the corresponding converter.

+	 */

+	@SuppressWarnings("unchecked")

+	public MoneyConverter(Unit<?> source, Unit<IMoney> target,

+			Number factor) {

+		

+			CurrencyUnit defCurrency = MoneyCurrency.of(Currency.getInstance(ULocale.getDefault()));

+			rate = new MoneyExchangeRate(defCurrency, defCurrency, factor);

+		

+	}

+

+	/**

+	 * Creates the currency converter from the source currency to the target

+	 * currency using <strong>JDK</strong> types.

+	 * 

+	 * @param source

+	 *            the source currency (<strong>JDK</strong>).

+	 * @param target

+	 *            the target currency (<strong>JDK</strong>).

+	 * @param factor

+	 *            the multiplier factor from source to target.

+	 * @return the corresponding converter.

+	 */

+	public MoneyConverter(java.util.Currency source,

+			java.util.Currency target, Number factor) {

+		rate = new MoneyExchangeRate(fromJDK(source), fromJDK(target), factor);

+	}

+

+	/**

+	 * Returns the source currency.

+	 * 

+	 * @return the source currency.

+	 */

+	public CurrencyUnit getSource() {

+		return rate.getBase();

+	}

+

+	/**

+	 * Returns the target currency.

+	 * 

+	 * @return the target currency.

+	 */

+	public CurrencyUnit getTarget() {

+		return rate.getTerm();

+	}

+

+	public MoneyConverter inverse() {

+		return new MoneyConverter(getTarget(), getSource(),

+				rate.getFactor());

+	}

+

+	public MoneyConverter negate() {

+		return new MoneyConverter(getSource(), getTarget(), -rate

+				.getFactor().doubleValue());

+	}

+

+	public double convert(double value) {

+		// Number factor = getExchangeRate(rate.getTarget());

+		Number factor = rate.getFactor();

+		checkFactor(factor);

+		return factor.doubleValue() * value;

+	}

+

+	public BigDecimal convert(BigDecimal value, MathContext ctx)

+			throws ArithmeticException {

+		// Number factor = rate.getSource().getExchangeRate(rate.getTarget());

+		Number factor = rate.getFactor();

+		checkFactor(factor);

+		if (factor instanceof BigDecimal)

+			return value.multiply((BigDecimal) factor, ctx);

+		if (factor instanceof Number) {

+			return value.multiply(

+					(BigDecimal.valueOf(((Number) factor).doubleValue())), ctx);

+		} else { // Reverts to double convert.

+			return value

+					.multiply(BigDecimal.valueOf(factor.doubleValue()), ctx);

+		}

+	}

+

+	public Number convert(Number value) {

+		if (value instanceof BigDecimal) {

+			return convert((BigDecimal) value, MathContext.DECIMAL128);

+		} else {

+			return convert(value.doubleValue());

+		}

+	}

+

+	@Override

+	public boolean equals(Object cvtr) {

+		if (!(cvtr instanceof MoneyConverter))

+			return false;

+		MoneyConverter that = (MoneyConverter) cvtr;

+		return this.getSource().equals(that.getSource())

+				&& this.getTarget().equals(that.getTarget());

+	}

+

+	@Override

+	public int hashCode() {

+		return getSource().hashCode() + getTarget().hashCode();

+	}

+

+	@Override

+	public final String toString() {

+		if (getSource().equals(getTarget())) {

+			return getSource().getCurrencyCode();

+		}

+		return String.format(Messages.CurrencyConverter_toString, getSource()

+				.getCurrencyCode(), getTarget().getCurrencyCode());

+	}

+

+	public boolean isLinear() {

+		return true;

+	}

+

+	public UnitConverter concatenate(UnitConverter converter) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	public List<UnitConverter> getCompoundConverters() {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	public boolean isIdentity() {

+		return false;

+	}

+

+	public ExchangeRate getExchangeRate() {

+		return rate;

+	}

+

+	public void formatTo(Formatter fmt, int f, int width, int precision) {

+		StringBuilder sb = new StringBuilder();

+

+		// decide form of name

+		String name = getSource().toString();

+		String symbol = getSource().getCurrencyCode();

+		// if (fmt.locale().equals(Locale.FRANCE))

+		// name = frenchCompanyName;

+		// boolean alternate = (f & ALTERNATE) == ALTERNATE;

+		boolean usesymbol = true; // alternate || (precision != -1 && precision

+									// < 10);

+		String out = (usesymbol ? symbol : name);

+

+		// apply precision

+		if (precision == -1 || out.length() < precision) {

+			// write it all

+			sb.append(out);

+		} else {

+			sb.append(out.substring(0, precision - 1)).append('*');

+		}

+

+		// apply width and justification

+		int len = sb.length();

+		if (len < width)

+			for (int i = 0; i < width - len; i++)

+				if ((f & LEFT_JUSTIFY) == LEFT_JUSTIFY)

+					sb.append(' ');

+				else

+					sb.insert(0, ' ');

+

+		fmt.format(sb.toString());

+	}

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyCurrency.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyCurrency.java
index cf3eec6..e9c1b80 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyCurrency.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyCurrency.java
@@ -1,710 +1,710 @@
-/**
- * Copyright (c) 2006, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.business.money;
-
-import static org.eclipse.uomo.business.money.MonetaryUnits.ISO_NAMESPACE;
-
-//import java.util.Currency;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Logger;
-
-import org.eclipse.uomo.business.internal.CurrencyUnit;
-import org.eclipse.uomo.business.internal.Localizable;
-
-import com.ibm.icu.util.Currency;
-import com.ibm.icu.util.ULocale;
-
-/**
- * Adapter that implements the  {@link CurrencyUnit} interface using the
- * ICU4J {@link com.ibm.icu.util.Currency}.
- * 
- * @version 0.2.3
- * @author Werner Keil
- * @deprecated merge into MoneyUnit
- */
-public class MoneyCurrency extends com.ibm.icu.util.Currency implements CurrencyUnit, Localizable {
-
-	/**
-	 * serialVersionUID.
-	 */
-	private static final long serialVersionUID = -2523936311372374236L;
-
-	/** namespace for this currency. */
-	private final String namespace;
-	/** currency code for this currency. */
-	private final String currencyCode;
-	/** valid from, or {@code null}. */
-	private final Long validFrom;
-	/** valid until, or {@code null}. */
-	private final Long validUntil;
-	/** true, if legal tender. */
-	private final boolean legalTender;
-	/** true, if it is a virtual currency. */
-	private final boolean virtual;
-
-	private static final Map<String, MoneyCurrency> CACHED = new ConcurrentHashMap<String, MoneyCurrency>();
-
-	private static final Logger LOGGER = Logger.getLogger(MoneyCurrency.class
-			.getName());
-
-	/**
-	 * Private constructor.
-	 * 
-	 * @param currency
-	 */
-	private MoneyCurrency(String namespace, String code, int numCode,
-			int fractionDigits, Long validFrom, Long validUntil, boolean legal,
-			boolean virtual) {
-		super(code);
-		this.namespace = namespace;
-		this.currencyCode = code;
-		this.validFrom = validFrom;
-		this.validUntil = validUntil;
-		this.legalTender = legal;
-		this.virtual = virtual;
-	}
-
-	/**
-	 * Private constructor.
-	 * 
-	 * @param currency
-	 */
-	private MoneyCurrency(Currency currency) {
-		super(currency != null ? currency.getCurrencyCode() : "");
-		if (currency == null) {
-			throw new IllegalArgumentException("Currency required.");
-		}
-		this.namespace = ISO_NAMESPACE;
-		this.currencyCode = currency.getCurrencyCode();
-		currency.getDefaultFractionDigits();
-		this.validFrom = null;
-		this.validUntil = null; // TODO Adapt for hisotoric one, e.g. AFA
-		this.legalTender = !this.currencyCode.startsWith("X"); // TODO check for
-																// each code in
-																// util.Currency
-																// here;
-		this.virtual = this.currencyCode.equals("XXX"); // TODO check for each
-														// code in util.Currency
-														// here;
-	}
-
-	/**
-	 * Access a new instance based on {@link Currency}.
-	 * 
-	 * @param currency
-	 *            the currency unitm not null.
-	 * @return the new instance, never null.
-	 */
-	public static MoneyCurrency of(Currency currency) {
-		String key = ISO_NAMESPACE + ':' + currency.getCurrencyCode();
-		MoneyCurrency cachedItem = CACHED.get(key);
-		if (cachedItem == null) {
-			cachedItem = new ICUCurrencyAdapter(currency);
-			CACHED.put(key, cachedItem);
-		}
-		return cachedItem;
-	}
-
-	/**
-	 * Access a new instance based on {@link Currency}.
-	 * 
-	 * @param currency
-	 *            the currency unitm not null.
-	 * @return the new instance, never null.
-	 */
-//	public static MoneyCurrency of(com.ibm.icu.util.Currency currency) {
-//		String key = ISO_NAMESPACE + ':' + currency.getCurrencyCode();
-//		MoneyCurrency cachedItem = CACHED.get(key);
-//		if (cachedItem == null) {
-//			cachedItem = new ICUCurrencyAdapter(currency);
-//			CACHED.put(key, cachedItem);
-//		}
-//		return cachedItem;
-//	}
-//	
-	/**
-	 * Access a new instance based on the ISO currency code. The code must
-	 * return a {@link Currency} when passed to
-	 * {@link Currency#getInstance(String)}.
-	 * 
-	 * @param currencyCode
-	 *            the ISO currency code, not null.
-	 * @return the corresponding {@link MonetaryCurrency} instance.
-	 */
-	public static MoneyCurrency of(String currencyCode) {
-		return of(Currency.getInstance(currencyCode));
-	}
-
-	/**
-	 * Access a new instance based on the ISO currency code. The code must
-	 * return a {@link Currency} when passed to
-	 * {@link Currency#getInstance(String)}.
-	 * 
-	 * @param namespace
-	 *            the target namespace.
-	 * @param currencyCode
-	 *            the ISO currency code, not null.
-	 * @return the corresponding {@link MonetaryCurrency} instance.
-	 */
-	public static MoneyCurrency of(String namespace, String currencyCode) {
-		String key = namespace + ':' + currencyCode;
-		MoneyCurrency cu = CACHED.get(key);
-		if (cu == null && namespace.equals(ISO_NAMESPACE)) {
-			return of(currencyCode);
-		}
-		return cu;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see javax.money.CurrencyUnit#isVirtual()
-	 */
-	
-	public boolean isVirtual() {
-		return virtual;
-	}
-
-	/**
-	 * Get the namepsace of this {@link CurrencyUnit}, returns 'ISO-4217'.
-	 */
-	
-	public String getNamespace() {
-		return namespace;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see javax.money.CurrencyUnit#getValidFrom()
-	 */
-	
-	public Long getValidFrom() {
-		return validFrom;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see javax.money.CurrencyUnit#getValidUntil()
-	 */
-	
-	public Long getValidUntil() {
-		return validUntil;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see javax.money.CurrencyUnit#getCurrencyCode()
-	 */
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see javax.money.CurrencyUnit#getNumericCode()
-	 */
-	
-//	public int getNumericCode() {
-//		return numericCode;
-//	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see javax.money.CurrencyUnit#getDefaultFractionDigits()
-	 */
-	
-//	public int getDefaultFractionDigits() {
-//		return defaultFractionDigits;
-//	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see javax.money.CurrencyUnit#isLegalTender()
-	 */
-	
-	public boolean isLegalTender() {
-		return legalTender;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	public int compareTo(CurrencyUnit currency) {
-		int compare = getNamespace().compareTo(currency.getNamespace());
-		if (compare == 0) {
-			compare = getCurrencyCode().compareTo(currency.getCurrencyCode());
-		}
-		if (compare == 0) {
-			if (validFrom == null && currency.getValidFrom() != null) {
-				compare = -1;
-			} else if (validFrom != null && currency.getValidFrom() == null) {
-				compare = 1;
-			} else if (validFrom != null) {
-				compare = validFrom.compareTo(currency.getValidFrom());
-			}
-		}
-		if (compare == 0) {
-			if (validUntil == null && currency.getValidUntil() != null) {
-				compare = -1;
-			} else if (validUntil != null && currency.getValidUntil() == null) {
-				compare = 1;
-			} else if (validUntil != null) {
-				compare = validUntil.compareTo(currency.getValidUntil());
-			}
-		}
-		return compare;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	
-	public String toString() {
-		if (ISO_NAMESPACE.equals(namespace)) {
-			return currencyCode;
-		}
-		return namespace + ':' + currencyCode;
-	}
-
-	/**
-	 * Builder class that supports building complex instances of
-	 * {@link MoneyCurrency}.
-	 * 
-	 * @author Anatole Tresch
-	 */
-	public static final class Builder {
-		/** namespace for this currency. */
-		private String namespace;
-		/** currency code for this currency. */
-		private String currencyCode;
-		/** numeric code, or -1. */
-		private int numericCode = -1;
-		/** fraction digits, or -1. */
-		private int defaultFractionDigits = -1;
-		/** valid from, or {@code null}. */
-		private Long validFrom;
-		/** valid until, or {@code null}. */
-		private Long validUntil;
-		/** true, if legal tender. */
-		private boolean legalTender = true;
-		/** true for virtual currencies. */
-		private boolean virtual = false;
-
-		/**
-		 * Creates a new {@link Builder}.
-		 */
-		public Builder() {
-		}
-
-		/**
-		 * Creates a new {@link Builder}, starting with the according ISO
-		 * currency.
-		 * 
-		 * @param currencyCode
-		 *            the ISO currency code.
-		 */
-		public Builder(String currencyCode) {
-			this(ISO_NAMESPACE, currencyCode);
-		}
-
-		/**
-		 * Creates a new {@link Builder}, starting with the namespace and code
-		 * given.
-		 * 
-		 * @param namespace
-		 *            the taregt namespace
-		 * @param currencyCode
-		 *            the currency code
-		 */
-		public Builder(String namespace, String currencyCode) {
-			setNamespace(namespace);
-			setCurrencyCode(currencyCode);
-		}
-
-		/**
-		 * Set the namespace.
-		 * 
-		 * @param namespace
-		 *            the namespace, not null
-		 * @return the builder, for chaining
-		 */
-		public Builder setNamespace(String namespace) {
-			if (namespace == null) {
-				throw new IllegalArgumentException("namespace may not be null.");
-			}
-			this.namespace = namespace;
-			return this;
-		}
-
-		/**
-		 * Set the currency code.
-		 * 
-		 * @param namespace
-		 *            the currency code, not null
-		 * @return the builder, for chaining
-		 */
-		public Builder setCurrencyCode(String currencyCode) {
-			if (currencyCode == null) {
-				throw new IllegalArgumentException(
-						"currencyCode may not be null.");
-			}
-			this.currencyCode = currencyCode;
-			return this;
-		}
-
-		/**
-		 * Set the default fraction digits.
-		 * 
-		 * @param defaultFractionDigits
-		 *            the default fraction digits
-		 * @return the builder, for chaining
-		 */
-		public Builder setDefaultFractionDigits(int defaultFractionDigits) {
-			if (defaultFractionDigits < -1) {
-				throw new IllegalArgumentException(
-						"Invalid value for defaultFractionDigits: "
-								+ defaultFractionDigits);
-			}
-			this.defaultFractionDigits = defaultFractionDigits;
-			return this;
-		}
-
-		/**
-		 * Set the numeric currency code.
-		 * 
-		 * @param numericCode
-		 *            the numeric currency code
-		 * @return the builder, for chaining
-		 */
-		public Builder setNumericCode(int numericCode) {
-			if (numericCode < -1) {
-				throw new IllegalArgumentException(
-						"Invalid value for numericCode: " + numericCode);
-			}
-			this.numericCode = numericCode;
-			return this;
-		}
-
-		/**
-		 * Sets the start UTC timestamp for the currenciy's validity.
-		 * 
-		 * @param validFrom
-		 *            the start UTC timestamp
-		 * @return the builder, for chaining
-		 */
-		public Builder setValidFrom(Long validFrom) {
-			this.validFrom = validFrom;
-			return this;
-		}
-
-		/**
-		 * Sets the end UTC timestamp for the currenciy's validity.
-		 * 
-		 * @param validUntil
-		 *            the ending UTC timestamp
-		 * @return the builder, for chaining
-		 */
-		public Builder setValidUntil(Long validUntil) {
-			this.validUntil = validUntil;
-			return this;
-		}
-
-		/**
-		 * Sets the legal tender attribute.
-		 * 
-		 * @param legalTender
-		 *            true, if the currency is a legal tender
-		 * @return the builder, for chaining
-		 */
-		public Builder setLegalTender(boolean legalTender) {
-			this.legalTender = legalTender;
-			return this;
-		}
-
-		/**
-		 * Sets the virtual attribute.
-		 * 
-		 * @param virtual
-		 *            true, if the currency is a virtual currency.
-		 * @return the builder, for chaining
-		 */
-		public Builder setVirtual(boolean virtual) {
-			this.virtual = virtual;
-			return this;
-		}
-
-		/**
-		 * Get the current namespace attribute set.
-		 * 
-		 * @return the namespace value, or null.
-		 */
-		public String getNamespace() {
-			return this.namespace;
-		}
-
-		/**
-		 * Get the current currency code attribute set.
-		 * 
-		 * @return the currency code value, or null.
-		 */
-		public String getCurrencyCode() {
-			return this.currencyCode;
-		}
-
-		/**
-		 * Get the current fraction digits attribute set.
-		 * 
-		 * @return the currency fraction digits value.
-		 */
-		public int getDefaultFractionDigits() {
-			return this.defaultFractionDigits;
-		}
-
-		/**
-		 * Get the current numeric code attribute set.
-		 * 
-		 * @return the numeric code value.
-		 */
-		public int getNumericCode() {
-			return this.numericCode;
-		}
-
-		/**
-		 * Get the starting validity period timestamp.
-		 * 
-		 * @return the starting validity period tiemstamp, or null..
-		 */
-		public Long getValidFrom() {
-			return this.validFrom;
-		}
-
-		/**
-		 * Get the ending validity period timestamp.
-		 * 
-		 * @return the ending validity period tiemstamp, or null..
-		 */
-		public Long getValidUntil() {
-			return this.validUntil;
-		}
-
-		/**
-		 * Access the legal tender attribute.
-		 * 
-		 * @return the attribute value.
-		 */
-		public boolean isLegalTender() {
-			return this.legalTender;
-		}
-
-		/**
-		 * Access the virtual attribute.
-		 * 
-		 * @return the attribute value.
-		 */
-		public boolean isVirtual() {
-			return this.virtual;
-		}
-
-		/**
-		 * Checks if this {@link Builder} instance can create a
-		 * {@link MoneyCurrency}.
-		 * 
-		 * @see #build()
-		 * @return true, if the builder can build.
-		 */
-		public boolean isBuildable() {
-			return namespace != null && currencyCode != null;
-		}
-
-		/**
-		 * Builds a new currency instance, the instance build is not cached
-		 * internally.
-		 * 
-		 * @see #build(boolean)
-		 * @return a new instance of {@link MoneyCurrency}.
-		 */
-		public MoneyCurrency build() {
-			return build(true);
-		}
-
-		/**
-		 * Builds a new currency instance, which ia additinoally stored to the
-		 * internal cache for reuse.
-		 * 
-		 * @param cache
-		 *            flag to optionally store the instance created into the
-		 *            locale cache.
-		 * @return a new instance of {@link MoneyCurrency}.
-		 */
-		public MoneyCurrency build(boolean cache) {
-			if (!isBuildable()) {
-				throw new IllegalStateException(
-						"Can not build CurrencyUnitImpl.");
-			}
-			if (cache) {
-				if (validUntil != null) {
-					LOGGER.warning("CurrencyUnit build: Can only cache currencies that have no validity constraints.");
-					cache = false;
-				}
-				if (validFrom != null) {
-					if (validFrom.longValue() > System.currentTimeMillis()) {
-						LOGGER.warning("CurrencyUnit build: Can only cache currencies that are already valid.");
-						cache = false;
-					}
-				}
-			}
-			if (cache) {
-				String key = namespace + ':' + currencyCode;
-				MoneyCurrency current = CACHED.get(key);
-				if (current == null) {
-					current = new MoneyCurrency(namespace, currencyCode,
-							numericCode, defaultFractionDigits, validFrom,
-							validUntil, legalTender, virtual);
-					CACHED.put(key, current);
-				}
-				return current;
-			}
-			return new MoneyCurrency(namespace, currencyCode, numericCode,
-					defaultFractionDigits, validFrom, validUntil, legalTender,
-					virtual);
-		}
-	}
-
-	/**
-	 * Adapter that implements the new {@link CurrencyUnit} interface using the
-	 * JDK's {@link Currency}.
-	 * <p>
-	 * This adapter will be removed in the final platform implementation.
-	 * 
-	 * @author Anatole Tresch
-	 * @author Werner Keil
-	 */
-	private final static class JDKCurrencyAdapter extends MoneyCurrency
-			implements Localizable {
-
-		/**
-		 * serialVersionUID.
-		 */
-		private static final long serialVersionUID = -2523936311372374236L;
-
-		/**
-		 * ISO 4217 currency code for this currency.
-		 * 
-		 * @serial
-		 */
-		private final Currency currency;
-
-		/**
-		 * Private constructor.
-		 * 
-		 * @param currency
-		 */
-		private JDKCurrencyAdapter(Currency currency) {
-			super(currency);
-			this.currency = currency;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.lang.Object#toString()
-		 */
-		
-		public String toString() {
-			return ISO_NAMESPACE + ':' + getCurrencyCode();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see Localizable#getDisplayName(java.util.Locale)
-		 */
-		public String getDisplayName(Locale locale) {
-			//return currency.getName(locale, nameStyle, isChoiceFormat) (locale);
-			return currency.getName(ULocale.forLocale(locale), LONG_NAME, new boolean[1]);
-		}
-
-	}
-	
-	/**
-	 * Adapter that implements the new {@link CurrencyUnit} interface using the
-	 * JDK's {@link Currency}.
-	 * <p>
-	 * This adapter will be removed in the final platform implementation.
-	 * 
-	 * @author Werner Keil
-	 */
-	private final static class ICUCurrencyAdapter extends MoneyCurrency
-			implements Localizable {
-
-		/**
-		 * serialVersionUID.
-		 */
-		private static final long serialVersionUID = -2523936311372374236L;
-
-		/**
-		 * ISO 4217 currency code for this currency.
-		 * 
-		 * @serial
-		 */
-		private final com.ibm.icu.util.Currency currency;
-
-		/**
-		 * Private constructor.
-		 * 
-		 * @param currency
-		 */
-		private ICUCurrencyAdapter(com.ibm.icu.util.Currency currency) {
-			super(ISO_NAMESPACE, currency.getCurrencyCode(), -1, currency.getDefaultFractionDigits(),
-					null, null, true, false);
-			this.currency = currency;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.lang.Object#toString()
-		 */
-		
-		public String toString() {
-			return ISO_NAMESPACE + ':' + getCurrencyCode();
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see javax.money.Localizable#getDisplayName(java.util.Locale)
-		 */
-		
-		public String getDisplayName(Locale locale) {
-			return currency.getName(ULocale.forLocale(locale), LONG_NAME, new boolean[1]);
-		}
-
-	}
-
-//	public String getDisplayName(Locale locale) {
-//		return getName(ULocale.forLocale(locale), LONG_NAME, new boolean[1]);
-//	}
-//
-//	public int getNumericCode() {
-//		return -1;
-//	}
-
-}
+/**

+ * Copyright (c) 2006, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.business.money;

+

+import static org.eclipse.uomo.business.money.MonetaryUnits.ISO_NAMESPACE;

+

+//import java.util.Currency;

+import java.util.Locale;

+import java.util.Map;

+import java.util.concurrent.ConcurrentHashMap;

+import java.util.logging.Logger;

+

+import org.eclipse.uomo.business.internal.CurrencyUnit;

+import org.eclipse.uomo.business.internal.Localizable;

+

+import com.ibm.icu.util.Currency;

+import com.ibm.icu.util.ULocale;

+

+/**

+ * Adapter that implements the  {@link CurrencyUnit} interface using the

+ * ICU4J {@link com.ibm.icu.util.Currency}.

+ * 

+ * @version 0.2.3

+ * @author Werner Keil

+ * @deprecated merge into MoneyUnit

+ */

+public class MoneyCurrency extends com.ibm.icu.util.Currency implements CurrencyUnit, Localizable {

+

+	/**

+	 * serialVersionUID.

+	 */

+	private static final long serialVersionUID = -2523936311372374236L;

+

+	/** namespace for this currency. */

+	private final String namespace;

+	/** currency code for this currency. */

+	private final String currencyCode;

+	/** valid from, or {@code null}. */

+	private final Long validFrom;

+	/** valid until, or {@code null}. */

+	private final Long validUntil;

+	/** true, if legal tender. */

+	private final boolean legalTender;

+	/** true, if it is a virtual currency. */

+	private final boolean virtual;

+

+	private static final Map<String, MoneyCurrency> CACHED = new ConcurrentHashMap<String, MoneyCurrency>();

+

+	private static final Logger LOGGER = Logger.getLogger(MoneyCurrency.class

+			.getName());

+

+	/**

+	 * Private constructor.

+	 * 

+	 * @param currency

+	 */

+	private MoneyCurrency(String namespace, String code, int numCode,

+			int fractionDigits, Long validFrom, Long validUntil, boolean legal,

+			boolean virtual) {

+		super(code);

+		this.namespace = namespace;

+		this.currencyCode = code;

+		this.validFrom = validFrom;

+		this.validUntil = validUntil;

+		this.legalTender = legal;

+		this.virtual = virtual;

+	}

+

+	/**

+	 * Private constructor.

+	 * 

+	 * @param currency

+	 */

+	private MoneyCurrency(Currency currency) {

+		super(currency != null ? currency.getCurrencyCode() : "");

+		if (currency == null) {

+			throw new IllegalArgumentException("Currency required.");

+		}

+		this.namespace = ISO_NAMESPACE;

+		this.currencyCode = currency.getCurrencyCode();

+		currency.getDefaultFractionDigits();

+		this.validFrom = null;

+		this.validUntil = null; // TODO Adapt for hisotoric one, e.g. AFA

+		this.legalTender = !this.currencyCode.startsWith("X"); // TODO check for

+																// each code in

+																// util.Currency

+																// here;

+		this.virtual = this.currencyCode.equals("XXX"); // TODO check for each

+														// code in util.Currency

+														// here;

+	}

+

+	/**

+	 * Access a new instance based on {@link Currency}.

+	 * 

+	 * @param currency

+	 *            the currency unitm not null.

+	 * @return the new instance, never null.

+	 */

+	public static MoneyCurrency of(Currency currency) {

+		String key = ISO_NAMESPACE + ':' + currency.getCurrencyCode();

+		MoneyCurrency cachedItem = CACHED.get(key);

+		if (cachedItem == null) {

+			cachedItem = new ICUCurrencyAdapter(currency);

+			CACHED.put(key, cachedItem);

+		}

+		return cachedItem;

+	}

+

+	/**

+	 * Access a new instance based on {@link Currency}.

+	 * 

+	 * @param currency

+	 *            the currency unitm not null.

+	 * @return the new instance, never null.

+	 */

+//	public static MoneyCurrency of(com.ibm.icu.util.Currency currency) {

+//		String key = ISO_NAMESPACE + ':' + currency.getCurrencyCode();

+//		MoneyCurrency cachedItem = CACHED.get(key);

+//		if (cachedItem == null) {

+//			cachedItem = new ICUCurrencyAdapter(currency);

+//			CACHED.put(key, cachedItem);

+//		}

+//		return cachedItem;

+//	}

+//	

+	/**

+	 * Access a new instance based on the ISO currency code. The code must

+	 * return a {@link Currency} when passed to

+	 * {@link Currency#getInstance(String)}.

+	 * 

+	 * @param currencyCode

+	 *            the ISO currency code, not null.

+	 * @return the corresponding {@link MonetaryCurrency} instance.

+	 */

+	public static MoneyCurrency of(String currencyCode) {

+		return of(Currency.getInstance(currencyCode));

+	}

+

+	/**

+	 * Access a new instance based on the ISO currency code. The code must

+	 * return a {@link Currency} when passed to

+	 * {@link Currency#getInstance(String)}.

+	 * 

+	 * @param namespace

+	 *            the target namespace.

+	 * @param currencyCode

+	 *            the ISO currency code, not null.

+	 * @return the corresponding {@link MonetaryCurrency} instance.

+	 */

+	public static MoneyCurrency of(String namespace, String currencyCode) {

+		String key = namespace + ':' + currencyCode;

+		MoneyCurrency cu = CACHED.get(key);

+		if (cu == null && namespace.equals(ISO_NAMESPACE)) {

+			return of(currencyCode);

+		}

+		return cu;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see javax.money.CurrencyUnit#isVirtual()

+	 */

+	

+	public boolean isVirtual() {

+		return virtual;

+	}

+

+	/**

+	 * Get the namepsace of this {@link CurrencyUnit}, returns 'ISO-4217'.

+	 */

+	

+	public String getNamespace() {

+		return namespace;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see javax.money.CurrencyUnit#getValidFrom()

+	 */

+	

+	public Long getValidFrom() {

+		return validFrom;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see javax.money.CurrencyUnit#getValidUntil()

+	 */

+	

+	public Long getValidUntil() {

+		return validUntil;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see javax.money.CurrencyUnit#getCurrencyCode()

+	 */

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see javax.money.CurrencyUnit#getNumericCode()

+	 */

+	

+//	public int getNumericCode() {

+//		return numericCode;

+//	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see javax.money.CurrencyUnit#getDefaultFractionDigits()

+	 */

+	

+//	public int getDefaultFractionDigits() {

+//		return defaultFractionDigits;

+//	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see javax.money.CurrencyUnit#isLegalTender()

+	 */

+	

+	public boolean isLegalTender() {

+		return legalTender;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see java.lang.Comparable#compareTo(java.lang.Object)

+	 */

+	public int compareTo(CurrencyUnit currency) {

+		int compare = getNamespace().compareTo(currency.getNamespace());

+		if (compare == 0) {

+			compare = getCurrencyCode().compareTo(currency.getCurrencyCode());

+		}

+		if (compare == 0) {

+			if (validFrom == null && currency.getValidFrom() != null) {

+				compare = -1;

+			} else if (validFrom != null && currency.getValidFrom() == null) {

+				compare = 1;

+			} else if (validFrom != null) {

+				compare = validFrom.compareTo(currency.getValidFrom());

+			}

+		}

+		if (compare == 0) {

+			if (validUntil == null && currency.getValidUntil() != null) {

+				compare = -1;

+			} else if (validUntil != null && currency.getValidUntil() == null) {

+				compare = 1;

+			} else if (validUntil != null) {

+				compare = validUntil.compareTo(currency.getValidUntil());

+			}

+		}

+		return compare;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see java.lang.Object#toString()

+	 */

+	

+	public String toString() {

+		if (ISO_NAMESPACE.equals(namespace)) {

+			return currencyCode;

+		}

+		return namespace + ':' + currencyCode;

+	}

+

+	/**

+	 * Builder class that supports building complex instances of

+	 * {@link MoneyCurrency}.

+	 * 

+	 * @author Anatole Tresch

+	 */

+	public static final class Builder {

+		/** namespace for this currency. */

+		private String namespace;

+		/** currency code for this currency. */

+		private String currencyCode;

+		/** numeric code, or -1. */

+		private int numericCode = -1;

+		/** fraction digits, or -1. */

+		private int defaultFractionDigits = -1;

+		/** valid from, or {@code null}. */

+		private Long validFrom;

+		/** valid until, or {@code null}. */

+		private Long validUntil;

+		/** true, if legal tender. */

+		private boolean legalTender = true;

+		/** true for virtual currencies. */

+		private boolean virtual = false;

+

+		/**

+		 * Creates a new {@link Builder}.

+		 */

+		public Builder() {

+		}

+

+		/**

+		 * Creates a new {@link Builder}, starting with the according ISO

+		 * currency.

+		 * 

+		 * @param currencyCode

+		 *            the ISO currency code.

+		 */

+		public Builder(String currencyCode) {

+			this(ISO_NAMESPACE, currencyCode);

+		}

+

+		/**

+		 * Creates a new {@link Builder}, starting with the namespace and code

+		 * given.

+		 * 

+		 * @param namespace

+		 *            the taregt namespace

+		 * @param currencyCode

+		 *            the currency code

+		 */

+		public Builder(String namespace, String currencyCode) {

+			setNamespace(namespace);

+			setCurrencyCode(currencyCode);

+		}

+

+		/**

+		 * Set the namespace.

+		 * 

+		 * @param namespace

+		 *            the namespace, not null

+		 * @return the builder, for chaining

+		 */

+		public Builder setNamespace(String namespace) {

+			if (namespace == null) {

+				throw new IllegalArgumentException("namespace may not be null.");

+			}

+			this.namespace = namespace;

+			return this;

+		}

+

+		/**

+		 * Set the currency code.

+		 * 

+		 * @param namespace

+		 *            the currency code, not null

+		 * @return the builder, for chaining

+		 */

+		public Builder setCurrencyCode(String currencyCode) {

+			if (currencyCode == null) {

+				throw new IllegalArgumentException(

+						"currencyCode may not be null.");

+			}

+			this.currencyCode = currencyCode;

+			return this;

+		}

+

+		/**

+		 * Set the default fraction digits.

+		 * 

+		 * @param defaultFractionDigits

+		 *            the default fraction digits

+		 * @return the builder, for chaining

+		 */

+		public Builder setDefaultFractionDigits(int defaultFractionDigits) {

+			if (defaultFractionDigits < -1) {

+				throw new IllegalArgumentException(

+						"Invalid value for defaultFractionDigits: "

+								+ defaultFractionDigits);

+			}

+			this.defaultFractionDigits = defaultFractionDigits;

+			return this;

+		}

+

+		/**

+		 * Set the numeric currency code.

+		 * 

+		 * @param numericCode

+		 *            the numeric currency code

+		 * @return the builder, for chaining

+		 */

+		public Builder setNumericCode(int numericCode) {

+			if (numericCode < -1) {

+				throw new IllegalArgumentException(

+						"Invalid value for numericCode: " + numericCode);

+			}

+			this.numericCode = numericCode;

+			return this;

+		}

+

+		/**

+		 * Sets the start UTC timestamp for the currenciy's validity.

+		 * 

+		 * @param validFrom

+		 *            the start UTC timestamp

+		 * @return the builder, for chaining

+		 */

+		public Builder setValidFrom(Long validFrom) {

+			this.validFrom = validFrom;

+			return this;

+		}

+

+		/**

+		 * Sets the end UTC timestamp for the currenciy's validity.

+		 * 

+		 * @param validUntil

+		 *            the ending UTC timestamp

+		 * @return the builder, for chaining

+		 */

+		public Builder setValidUntil(Long validUntil) {

+			this.validUntil = validUntil;

+			return this;

+		}

+

+		/**

+		 * Sets the legal tender attribute.

+		 * 

+		 * @param legalTender

+		 *            true, if the currency is a legal tender

+		 * @return the builder, for chaining

+		 */

+		public Builder setLegalTender(boolean legalTender) {

+			this.legalTender = legalTender;

+			return this;

+		}

+

+		/**

+		 * Sets the virtual attribute.

+		 * 

+		 * @param virtual

+		 *            true, if the currency is a virtual currency.

+		 * @return the builder, for chaining

+		 */

+		public Builder setVirtual(boolean virtual) {

+			this.virtual = virtual;

+			return this;

+		}

+

+		/**

+		 * Get the current namespace attribute set.

+		 * 

+		 * @return the namespace value, or null.

+		 */

+		public String getNamespace() {

+			return this.namespace;

+		}

+

+		/**

+		 * Get the current currency code attribute set.

+		 * 

+		 * @return the currency code value, or null.

+		 */

+		public String getCurrencyCode() {

+			return this.currencyCode;

+		}

+

+		/**

+		 * Get the current fraction digits attribute set.

+		 * 

+		 * @return the currency fraction digits value.

+		 */

+		public int getDefaultFractionDigits() {

+			return this.defaultFractionDigits;

+		}

+

+		/**

+		 * Get the current numeric code attribute set.

+		 * 

+		 * @return the numeric code value.

+		 */

+		public int getNumericCode() {

+			return this.numericCode;

+		}

+

+		/**

+		 * Get the starting validity period timestamp.

+		 * 

+		 * @return the starting validity period tiemstamp, or null..

+		 */

+		public Long getValidFrom() {

+			return this.validFrom;

+		}

+

+		/**

+		 * Get the ending validity period timestamp.

+		 * 

+		 * @return the ending validity period tiemstamp, or null..

+		 */

+		public Long getValidUntil() {

+			return this.validUntil;

+		}

+

+		/**

+		 * Access the legal tender attribute.

+		 * 

+		 * @return the attribute value.

+		 */

+		public boolean isLegalTender() {

+			return this.legalTender;

+		}

+

+		/**

+		 * Access the virtual attribute.

+		 * 

+		 * @return the attribute value.

+		 */

+		public boolean isVirtual() {

+			return this.virtual;

+		}

+

+		/**

+		 * Checks if this {@link Builder} instance can create a

+		 * {@link MoneyCurrency}.

+		 * 

+		 * @see #build()

+		 * @return true, if the builder can build.

+		 */

+		public boolean isBuildable() {

+			return namespace != null && currencyCode != null;

+		}

+

+		/**

+		 * Builds a new currency instance, the instance build is not cached

+		 * internally.

+		 * 

+		 * @see #build(boolean)

+		 * @return a new instance of {@link MoneyCurrency}.

+		 */

+		public MoneyCurrency build() {

+			return build(true);

+		}

+

+		/**

+		 * Builds a new currency instance, which ia additinoally stored to the

+		 * internal cache for reuse.

+		 * 

+		 * @param cache

+		 *            flag to optionally store the instance created into the

+		 *            locale cache.

+		 * @return a new instance of {@link MoneyCurrency}.

+		 */

+		public MoneyCurrency build(boolean cache) {

+			if (!isBuildable()) {

+				throw new IllegalStateException(

+						"Can not build CurrencyUnitImpl.");

+			}

+			if (cache) {

+				if (validUntil != null) {

+					LOGGER.warning("CurrencyUnit build: Can only cache currencies that have no validity constraints.");

+					cache = false;

+				}

+				if (validFrom != null) {

+					if (validFrom.longValue() > System.currentTimeMillis()) {

+						LOGGER.warning("CurrencyUnit build: Can only cache currencies that are already valid.");

+						cache = false;

+					}

+				}

+			}

+			if (cache) {

+				String key = namespace + ':' + currencyCode;

+				MoneyCurrency current = CACHED.get(key);

+				if (current == null) {

+					current = new MoneyCurrency(namespace, currencyCode,

+							numericCode, defaultFractionDigits, validFrom,

+							validUntil, legalTender, virtual);

+					CACHED.put(key, current);

+				}

+				return current;

+			}

+			return new MoneyCurrency(namespace, currencyCode, numericCode,

+					defaultFractionDigits, validFrom, validUntil, legalTender,

+					virtual);

+		}

+	}

+

+	/**

+	 * Adapter that implements the new {@link CurrencyUnit} interface using the

+	 * JDK's {@link Currency}.

+	 * <p>

+	 * This adapter will be removed in the final platform implementation.

+	 * 

+	 * @author Anatole Tresch

+	 * @author Werner Keil

+	 */

+	private final static class JDKCurrencyAdapter extends MoneyCurrency

+			implements Localizable {

+

+		/**

+		 * serialVersionUID.

+		 */

+		private static final long serialVersionUID = -2523936311372374236L;

+

+		/**

+		 * ISO 4217 currency code for this currency.

+		 * 

+		 * @serial

+		 */

+		private final Currency currency;

+

+		/**

+		 * Private constructor.

+		 * 

+		 * @param currency

+		 */

+		private JDKCurrencyAdapter(Currency currency) {

+			super(currency);

+			this.currency = currency;

+		}

+

+		/*

+		 * (non-Javadoc)

+		 * 

+		 * @see java.lang.Object#toString()

+		 */

+		

+		public String toString() {

+			return ISO_NAMESPACE + ':' + getCurrencyCode();

+		}

+

+		/*

+		 * (non-Javadoc)

+		 * 

+		 * @see Localizable#getDisplayName(java.util.Locale)

+		 */

+		public String getDisplayName(Locale locale) {

+			//return currency.getName(locale, nameStyle, isChoiceFormat) (locale);

+			return currency.getName(ULocale.forLocale(locale), LONG_NAME, new boolean[1]);

+		}

+

+	}

+	

+	/**

+	 * Adapter that implements the new {@link CurrencyUnit} interface using the

+	 * JDK's {@link Currency}.

+	 * <p>

+	 * This adapter will be removed in the final platform implementation.

+	 * 

+	 * @author Werner Keil

+	 */

+	private final static class ICUCurrencyAdapter extends MoneyCurrency

+			implements Localizable {

+

+		/**

+		 * serialVersionUID.

+		 */

+		private static final long serialVersionUID = -2523936311372374236L;

+

+		/**

+		 * ISO 4217 currency code for this currency.

+		 * 

+		 * @serial

+		 */

+		private final com.ibm.icu.util.Currency currency;

+

+		/**

+		 * Private constructor.

+		 * 

+		 * @param currency

+		 */

+		private ICUCurrencyAdapter(com.ibm.icu.util.Currency currency) {

+			super(ISO_NAMESPACE, currency.getCurrencyCode(), -1, currency.getDefaultFractionDigits(),

+					null, null, true, false);

+			this.currency = currency;

+		}

+

+		/*

+		 * (non-Javadoc)

+		 * 

+		 * @see java.lang.Object#toString()

+		 */

+		

+		public String toString() {

+			return ISO_NAMESPACE + ':' + getCurrencyCode();

+		}

+

+		/*

+		 * (non-Javadoc)

+		 * 

+		 * @see javax.money.Localizable#getDisplayName(java.util.Locale)

+		 */

+		

+		public String getDisplayName(Locale locale) {

+			return currency.getName(ULocale.forLocale(locale), LONG_NAME, new boolean[1]);

+		}

+

+	}

+

+//	public String getDisplayName(Locale locale) {

+//		return getName(ULocale.forLocale(locale), LONG_NAME, new boolean[1]);

+//	}

+//

+//	public int getNumericCode() {

+//		return -1;

+//	}

+

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyUnit.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyUnit.java
index fbc0967..5ec9fb8 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyUnit.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/money/MoneyUnit.java
@@ -1,488 +1,488 @@
-/**
- * Copyright (c) 2005, 2015, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.business.money;
-
-import static org.eclipse.uomo.business.money.MonetaryUnits.ISO_NAMESPACE;
-
-import java.math.BigInteger;
-import java.util.Map;
-
-import org.eclipse.uomo.business.internal.CurrencyUnit;
-import org.eclipse.uomo.business.internal.Localizable;
-import org.eclipse.uomo.business.types.IMoney;
-import org.eclipse.uomo.core.IName;
-import org.eclipse.uomo.units.AbstractConverter;
-import org.eclipse.uomo.units.AbstractUnit;
-import org.eclipse.uomo.units.impl.AlternateUnit;
-import org.eclipse.uomo.units.impl.ProductUnit;
-import org.eclipse.uomo.units.impl.TransformedUnit;
-import org.eclipse.uomo.units.impl.converter.AddConverter;
-import org.eclipse.uomo.units.impl.converter.MultiplyConverter;
-import org.eclipse.uomo.units.impl.converter.RationalConverter;
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.unit.Dimension;
-import org.unitsofmeasurement.unit.IncommensurableException;
-import org.unitsofmeasurement.unit.UnconvertibleException;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-import com.ibm.icu.util.Currency;
-import com.ibm.icu.util.ULocale;
-
-
-/**
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 0.2.8, $Date: 2015-04-15
- * @param <Q> the monetary quantity
- * 
- */
-public class MoneyUnit<Q extends IMoney> extends Currency implements
-		Unit<IMoney>, IName, CurrencyUnit, Localizable {
-// TODO use JSR 354
-	/**
-     * 
-     */
-	private static final long serialVersionUID = 8524573975644908457L;
-	
-	/** namespace for this currency. */
-	private final String namespace;
-	/** valid from, or {@code null}. */
-	private final Long validFrom;
-	/** valid until, or {@code null}. */
-	private final Long validUntil;
-	/** true, if legal tender. */
-	private final boolean legalTender;
-	/** true, if it is a virtual currency. */
-	private final boolean virtual;
-	
-	protected MoneyUnit(String theCode, String namespace, 
-			Long validFrom, Long validUntil,
-			boolean legalTender, boolean virtual) {
-		super(theCode);
-		this.namespace = namespace;
-		this.validFrom = validFrom;
-		this.validUntil = validUntil;
-		this.legalTender = legalTender;
-		this.virtual = virtual;
-	}
-	
-	protected MoneyUnit(String theISOCode) {
-		this(theISOCode, ISO_NAMESPACE, null, null, true, false);
-	}
-
-	/**
-	 * The Canadian Dollar currency unit.
-	 */
-	public static final MoneyUnit<IMoney> CAD = new MoneyUnit<IMoney>("CAD"); //$NON-NLS-1$
-
-	/**
-	 * The China Yan currency.
-	 */
-	public static final MoneyUnit<IMoney> CNY = new MoneyUnit<IMoney>("CNY"); //$NON-NLS-1$
-
-	/**
-	 * The Euro currency.
-	 */
-	@SuppressWarnings("rawtypes")
-	public static final MoneyUnit EUR = new MoneyUnit<IMoney>("EUR"); //$NON-NLS-1$
-
-	/**
-	 * The British Pound currency.
-	 */
-	public static final MoneyUnit<IMoney> GBP = new MoneyUnit<IMoney>("GBP"); //$NON-NLS-1$
-
-	/**
-	 * The Japanese Yen currency.
-	 */
-	public static final MoneyUnit<IMoney> JPY = new MoneyUnit<IMoney>("JPY"); //$NON-NLS-1$
-
-	/**
-	 * The Korean Republic Won currency.
-	 */
-	public static final MoneyUnit<IMoney> KRW = new MoneyUnit<IMoney>("KRW"); //$NON-NLS-1$
-
-	/**
-	 * The Taiwanese dollar currency.
-	 */
-	@SuppressWarnings("rawtypes")
-	public static final MoneyUnit TWD = new MoneyUnit<IMoney>("TWD"); //$NON-NLS-1$
-
-	/**
-	 * Holds the dimensionless unit <code>ONE</code>.
-	 */
-	public static final ProductUnit<IMoney> ONE = new ProductUnit<IMoney>();
-
-	/**
-	 * The United State dollar currency.
-	 */
-	@SuppressWarnings("rawtypes")
-	public static final MoneyUnit USD = new MoneyUnit<IMoney>("USD"); //$NON-NLS-1$
-
-	/**
-	 * Returns the result of adding an offset to this unit. The returned unit is
-	 * convertible with all units that are convertible with this unit.
-	 * 
-	 * @param offset
-	 *            the offset added (expressed in this unit, e.g.
-	 *            <code>CELSIUS = KELVIN.add(273.15)</code>).
-	 * @return <code>this.transform(new AddConverter(offset))</code>
-	 */
-	public final Unit<IMoney> add(double offset) {
-		if (offset == 0)
-			return this;
-		return transform(new AddConverter(offset));
-	}
-
-	/**
-	 * Returns a metric unit equivalent to this unscaled metric unit but used in
-	 * expressions to distinguish between quantities of a different nature but
-	 * of the same dimensions.
-	 * 
-	 * <p>
-	 * Examples of alternate units:[code] Unit<Angle> RADIAN =
-	 * ONE.alternate("rad"); Unit<Force> NEWTON =
-	 * METRE.times(KILOGRAM).divide(SECOND.pow(2)).alternate("N");
-	 * Unit<Pressure> PASCAL = NEWTON.divide(METRE.pow(2)).alternate("Pa");
-	 * [/code]
-	 * </p>
-	 * 
-	 * @param <Q>
-	 *            the type of the quantity measured by the new alternate unit.
-	 * 
-	 * @param symbol
-	 *            the new symbol for the alternate unit.
-	 * @return the alternate unit.
-	 * @throws UnsupportedOperationException
-	 *             if this unit is not an unscaled metric unit.
-	 * @throws IllegalArgumentException
-	 *             if the specified symbol is already associated to a different
-	 *             unit.
-	 */
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	public final Unit<IMoney> alternate(String symbol) {
-		return new AlternateUnit(symbol, this);
-	}
-
-	public <T extends Quantity<T>> Unit<T> asType(Class<T> type) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/**
-	 * Returns the result of dividing this unit by an approximate divisor.
-	 * 
-	 * @param divisor
-	 *            the approximate divisor.
-	 * @return <code>this.transform(new MultiplyConverter(1.0 / divisor))</code>
-	 */
-	public final Unit<IMoney> divide(double divisor) {
-		if (divisor == 1)
-			return this;
-		return transform(new MultiplyConverter(1.0 / divisor));
-	}
-
-	/**
-	 * Returns the result of dividing this unit by an exact divisor.
-	 * 
-	 * @param divisor
-	 *            the exact divisor. (e.g.
-	 *            <code>QUART = GALLON_LIQUID_US.divide(4)</code>).
-	 * @return <code>this.transform(new RationalConverter(1 , divisor))</code>
-	 */
-	public final Unit<?> divide(long divisor) {
-		if (divisor == 1)
-			return this;
-		return (Unit<?>) transform(new RationalConverter(BigInteger.ONE,
-				BigInteger.valueOf(divisor)));
-	}
-
-	public UnitConverter getConverterTo(Unit<IMoney> that)
-			throws UnconvertibleException {
-		return new MoneyConverter(this, that, 1);
-	}
-
-	public UnitConverter getConverterToAny(Unit<?> that)
-			throws IncommensurableException, UnconvertibleException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public Dimension getDimension() {
-		return IMoney.DIMENSION;
-	}
-
-	public Map<Unit<?>, Integer> getProductUnits() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	private boolean isRationalFactor() {
-		// if (!(this instanceof TransformedUnit<?>))
-		// return false;
-		// TransformedUnit<Q> tu = (TransformedUnit<Q>) this;
-		// return tu.getParentUnit().equals(ONE) &&
-		// (tu.getConverterTo(tu.toMetric()) instanceof RationalConverter);
-		return true;
-	}
-
-	/**
-	 * Returns the inverse of this unit.
-	 * 
-	 * @return <code>1 / this</code>
-	 */
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	public final Unit<?> inverse() {
-		if (this.equals(ONE))
-			return this;
-		if (this.isRationalFactor())
-			return this.transform(this.getConverterTo((Unit) ONE).inverse());
-		return ProductUnit.getQuotientInstance(ONE, this);
-	}
-
-	public boolean isCompatible(Unit<?> that) {
-		return (this == that)
-				|| this.toMetric().equals(that.getSystemUnit())
-				|| (!"".equals(this.getDimension().toString()) && this.getDimension().equals(that.getDimension())); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns the result of multiplying this unit by an exact factor.
-	 * 
-	 * @param factor
-	 *            the exact scale factor (e.g.
-	 *            <code>KILOMETRE = METRE.multiply(1000)</code>).
-	 * @return <code>this.transform(new RationalConverter(factor, 1))</code>
-	 */
-	final Unit<IMoney> multiply(long factor) {
-		if (factor == 1)
-			return this;
-		return transform(new RationalConverter(BigInteger.valueOf(factor),
-				BigInteger.ONE));
-	}
-
-	/**
-	 * Returns the result of multiplying this unit by a an approximate factor.
-	 * 
-	 * @param factor
-	 *            the approximate factor (e.g.
-	 *            <code>ELECTRON_MASS = KILOGRAM.multiply(9.10938188e-31)</code>
-	 *            ).
-	 * @return <code>this.transform(new MultiplyConverter(factor))</code>
-	 */
-	public final Unit<IMoney> multiply(double factor) {
-		if (factor == 1)
-			return this;
-		return transform(new MultiplyConverter(factor));
-	}
-
-	/**
-	 * Returns the product of this unit with the one specified.
-	 * 
-	 * @param that
-	 *            the unit multiplicand.
-	 * @return <code>this * that</code>
-	 */
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	public final Unit<?> multiply(Unit<?> that) {
-		if (this.equals(ONE))
-			return that;
-		if (that.equals(ONE))
-			return this;
-		if (this.isRationalFactor())
-			return that.transform(this.getConverterTo(ONE));
-		if (((MoneyUnit<?>) that).isRationalFactor())
-			return this.transform(that.getConverterTo((Unit) ONE));
-		return ProductUnit.getProductInstance(this, (AbstractUnit<?>) that);
-	}
-
-	/**
-	 * Returns a unit equals to this unit raised to an exponent.
-	 * 
-	 * @param n
-	 *            the exponent.
-	 * @return the result of raising this unit to the exponent.
-	 */
-	public final Unit<?> pow(int n) {
-		if (n > 0)
-			return this.multiply(this.pow(n - 1));
-		else if (n == 0)
-			return ONE;
-		else
-			// n < 0
-			return ONE.divide(this.pow(-n));
-	}
-
-	/**
-	 * Returns a unit equals to the given root of this unit.
-	 * 
-	 * @param n
-	 *            the root's order.
-	 * @return the result of taking the given root of this unit.
-	 * @throws ArithmeticException
-	 *             if <code>n == 0</code> or if this operation would result in
-	 *             an unit with a fractional exponent.
-	 */
-	public final Unit<?> root(int n) {
-		if (n > 0)
-			return ProductUnit.getRootInstance(this, n);
-		else if (n == 0)
-			throw new ArithmeticException("Root's order of zero"); //$NON-NLS-1$
-		else
-			// n < 0
-			return ONE.divide(this.root(-n));
-	}
-
-	protected Unit<IMoney> toMetric() {
-		return this;
-	}
-
-	/**
-	 * Returns the unit derived from this unit using the specified converter.
-	 * The converter does not need to be linear. For example:[code]
-	 * Unit<Dimensionless> DECIBEL = Unit.ONE.transform( new
-	 * LogConverter(10).inverse().concatenate( new RationalConverter(1, 10)));
-	 * [/code]
-	 * 
-	 * @param operation
-	 *            the converter from the transformed unit to this unit.
-	 * @return the unit after the specified transformation.
-	 */
-	@SuppressWarnings("unchecked")
-	public final Unit<IMoney> transform(UnitConverter operation) {
-		if (this instanceof Unit<?>) {
-			Unit<IMoney> tf = this;
-			Unit<?> parent = (Unit<?>) ((TransformedUnit<?>) tf)
-					.getParentUnit();
-			UnitConverter toParent = ((TransformedUnit<?>) tf).toParentUnit();
-			if (toParent == null)
-				return (Unit<IMoney>) parent;
-			UnitConverter toParentConcat = toParent.concatenate(operation);
-			if (toParentConcat == AbstractConverter.IDENTITY)
-				return (Unit<IMoney>) parent;
-			return new TransformedUnit<IMoney>((Unit<IMoney>) parent,
-					(AbstractConverter) toParentConcat);
-		}
-		if (operation == AbstractConverter.IDENTITY)
-			return this;
-		return new TransformedUnit<IMoney>(this, (AbstractConverter) operation);
-	}
-
-	/**
-	 * Returns the quotient of this unit with the one specified.
-	 * 
-	 * @param that
-	 *            the unit divisor.
-	 * @return <code>this / that</code>
-	 */
-	public final Unit<?> divide(Unit<?> that) {
-		return (Unit<?>) this.multiply(that.inverse());
-	}
-
-	public String getName() {
-		return getName(ULocale.getDefault(), LONG_NAME, new boolean[] { false });
-	}
-
-	public Unit<IMoney> getSystemUnit() {
-		return toMetric();
-	}
-	 
-	/**
-	 * Get the namespace of this {@link CurrencyUnit}, default 'ISO-4217'.
-	 */
-	public String getNamespace() {
-		return namespace;
-	}
-	 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see CurrencyUnit#isLegalTender()
-	 */
-	public boolean isLegalTender() {
-		return legalTender;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see CurrencyUnit#isVirtual()
-	 */
-	public boolean isVirtual() {
-		return virtual;
-	}
-	 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see CurrencyUnit#getValidFrom()
-	 */
-	
-	public Long getValidFrom() {
-		return validFrom;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see CurrencyUnit#getValidUntil()
-	 */
-	
-	public Long getValidUntil() {
-		return validUntil;
-	}
-
-	public int compareTo(CurrencyUnit currency) {
-		int compare = getNamespace().compareTo(currency.getNamespace());
-		if (compare == 0) {
-			compare = getCurrencyCode().compareTo(currency.getCurrencyCode());
-		}
-		if (compare == 0) {
-			if (validFrom == null && currency.getValidFrom() != null) {
-				compare = -1;
-			} else if (validFrom != null && currency.getValidFrom() == null) {
-				compare = 1;
-			} else if (validFrom != null) {
-				compare = validFrom.compareTo(currency.getValidFrom());
-			}
-		}
-		if (compare == 0) {
-			if (validUntil == null && currency.getValidUntil() != null) {
-				compare = -1;
-			} else if (validUntil != null && currency.getValidUntil() == null) {
-				compare = 1;
-			} else if (validUntil != null) {
-				compare = validUntil.compareTo(currency.getValidUntil());
-			}
-		}
-		return compare;
-	}
-	
-	/**
-	 * Access a new instance based on the ISO currency code. The code must
-	 * return a {@link Currency} when passed to
-	 * {@link Currency#getInstance(String)}.
-	 * 
-	 * @param currencyCode
-	 *            the ISO currency code, not null.
-	 * @return the corresponding {@link MonetaryCurrency} instance.
-	 */
-	public static MoneyUnit of(String currencyCode) {
-		return new MoneyUnit(currencyCode);
-	}
-
-//	public String getDisplayName(Locale locale) {
-//		return getName(ULocale.forLocale(locale), LONG_NAME, new boolean[1]);
-//	}
-//
-//	public int getNumericCode() {
-//		return -1;
-//	}
-}
+/**

+ * Copyright (c) 2005, 2015, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.business.money;

+

+import static org.eclipse.uomo.business.money.MonetaryUnits.ISO_NAMESPACE;

+

+import java.math.BigInteger;

+import java.util.Map;

+

+import org.eclipse.uomo.business.internal.CurrencyUnit;

+import org.eclipse.uomo.business.internal.Localizable;

+import org.eclipse.uomo.business.types.IMoney;

+import org.eclipse.uomo.core.IName;

+import org.eclipse.uomo.units.AbstractConverter;

+import org.eclipse.uomo.units.AbstractUnit;

+import org.eclipse.uomo.units.impl.AlternateUnit;

+import org.eclipse.uomo.units.impl.ProductUnit;

+import org.eclipse.uomo.units.impl.TransformedUnit;

+import org.eclipse.uomo.units.impl.converter.AddConverter;

+import org.eclipse.uomo.units.impl.converter.MultiplyConverter;

+import org.eclipse.uomo.units.impl.converter.RationalConverter;

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.unit.Dimension;

+import org.unitsofmeasurement.unit.IncommensurableException;

+import org.unitsofmeasurement.unit.UnconvertibleException;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+import com.ibm.icu.util.Currency;

+import com.ibm.icu.util.ULocale;

+

+

+/**

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 0.2.8, $Date: 2015-04-15

+ * @param <Q> the monetary quantity

+ * 

+ */

+public class MoneyUnit<Q extends IMoney> extends Currency implements

+		Unit<IMoney>, IName, CurrencyUnit, Localizable {

+// TODO use JSR 354

+	/**

+     * 

+     */

+	private static final long serialVersionUID = 8524573975644908457L;

+	

+	/** namespace for this currency. */

+	private final String namespace;

+	/** valid from, or {@code null}. */

+	private final Long validFrom;

+	/** valid until, or {@code null}. */

+	private final Long validUntil;

+	/** true, if legal tender. */

+	private final boolean legalTender;

+	/** true, if it is a virtual currency. */

+	private final boolean virtual;

+	

+	protected MoneyUnit(String theCode, String namespace, 

+			Long validFrom, Long validUntil,

+			boolean legalTender, boolean virtual) {

+		super(theCode);

+		this.namespace = namespace;

+		this.validFrom = validFrom;

+		this.validUntil = validUntil;

+		this.legalTender = legalTender;

+		this.virtual = virtual;

+	}

+	

+	protected MoneyUnit(String theISOCode) {

+		this(theISOCode, ISO_NAMESPACE, null, null, true, false);

+	}

+

+	/**

+	 * The Canadian Dollar currency unit.

+	 */

+	public static final MoneyUnit<IMoney> CAD = new MoneyUnit<IMoney>("CAD"); //$NON-NLS-1$

+

+	/**

+	 * The China Yan currency.

+	 */

+	public static final MoneyUnit<IMoney> CNY = new MoneyUnit<IMoney>("CNY"); //$NON-NLS-1$

+

+	/**

+	 * The Euro currency.

+	 */

+	@SuppressWarnings("rawtypes")

+	public static final MoneyUnit EUR = new MoneyUnit<IMoney>("EUR"); //$NON-NLS-1$

+

+	/**

+	 * The British Pound currency.

+	 */

+	public static final MoneyUnit<IMoney> GBP = new MoneyUnit<IMoney>("GBP"); //$NON-NLS-1$

+

+	/**

+	 * The Japanese Yen currency.

+	 */

+	public static final MoneyUnit<IMoney> JPY = new MoneyUnit<IMoney>("JPY"); //$NON-NLS-1$

+

+	/**

+	 * The Korean Republic Won currency.

+	 */

+	public static final MoneyUnit<IMoney> KRW = new MoneyUnit<IMoney>("KRW"); //$NON-NLS-1$

+

+	/**

+	 * The Taiwanese dollar currency.

+	 */

+	@SuppressWarnings("rawtypes")

+	public static final MoneyUnit TWD = new MoneyUnit<IMoney>("TWD"); //$NON-NLS-1$

+

+	/**

+	 * Holds the dimensionless unit <code>ONE</code>.

+	 */

+	public static final ProductUnit<IMoney> ONE = new ProductUnit<IMoney>();

+

+	/**

+	 * The United State dollar currency.

+	 */

+	@SuppressWarnings("rawtypes")

+	public static final MoneyUnit USD = new MoneyUnit<IMoney>("USD"); //$NON-NLS-1$

+

+	/**

+	 * Returns the result of adding an offset to this unit. The returned unit is

+	 * convertible with all units that are convertible with this unit.

+	 * 

+	 * @param offset

+	 *            the offset added (expressed in this unit, e.g.

+	 *            <code>CELSIUS = KELVIN.add(273.15)</code>).

+	 * @return <code>this.transform(new AddConverter(offset))</code>

+	 */

+	public final Unit<IMoney> add(double offset) {

+		if (offset == 0)

+			return this;

+		return transform(new AddConverter(offset));

+	}

+

+	/**

+	 * Returns a metric unit equivalent to this unscaled metric unit but used in

+	 * expressions to distinguish between quantities of a different nature but

+	 * of the same dimensions.

+	 * 

+	 * <p>

+	 * Examples of alternate units:[code] Unit<Angle> RADIAN =

+	 * ONE.alternate("rad"); Unit<Force> NEWTON =

+	 * METRE.times(KILOGRAM).divide(SECOND.pow(2)).alternate("N");

+	 * Unit<Pressure> PASCAL = NEWTON.divide(METRE.pow(2)).alternate("Pa");

+	 * [/code]

+	 * </p>

+	 * 

+	 * @param <Q>

+	 *            the type of the quantity measured by the new alternate unit.

+	 * 

+	 * @param symbol

+	 *            the new symbol for the alternate unit.

+	 * @return the alternate unit.

+	 * @throws UnsupportedOperationException

+	 *             if this unit is not an unscaled metric unit.

+	 * @throws IllegalArgumentException

+	 *             if the specified symbol is already associated to a different

+	 *             unit.

+	 */

+	@SuppressWarnings({ "unchecked", "rawtypes" })

+	public final Unit<IMoney> alternate(String symbol) {

+		return new AlternateUnit(symbol, this);

+	}

+

+	public <T extends Quantity<T>> Unit<T> asType(Class<T> type) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	/**

+	 * Returns the result of dividing this unit by an approximate divisor.

+	 * 

+	 * @param divisor

+	 *            the approximate divisor.

+	 * @return <code>this.transform(new MultiplyConverter(1.0 / divisor))</code>

+	 */

+	public final Unit<IMoney> divide(double divisor) {

+		if (divisor == 1)

+			return this;

+		return transform(new MultiplyConverter(1.0 / divisor));

+	}

+

+	/**

+	 * Returns the result of dividing this unit by an exact divisor.

+	 * 

+	 * @param divisor

+	 *            the exact divisor. (e.g.

+	 *            <code>QUART = GALLON_LIQUID_US.divide(4)</code>).

+	 * @return <code>this.transform(new RationalConverter(1 , divisor))</code>

+	 */

+	public final Unit<?> divide(long divisor) {

+		if (divisor == 1)

+			return this;

+		return (Unit<?>) transform(new RationalConverter(BigInteger.ONE,

+				BigInteger.valueOf(divisor)));

+	}

+

+	public UnitConverter getConverterTo(Unit<IMoney> that)

+			throws UnconvertibleException {

+		return new MoneyConverter(this, that, 1);

+	}

+

+	public UnitConverter getConverterToAny(Unit<?> that)

+			throws IncommensurableException, UnconvertibleException {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	public Dimension getDimension() {

+		return IMoney.DIMENSION;

+	}

+

+	public Map<Unit<?>, Integer> getProductUnits() {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	private boolean isRationalFactor() {

+		// if (!(this instanceof TransformedUnit<?>))

+		// return false;

+		// TransformedUnit<Q> tu = (TransformedUnit<Q>) this;

+		// return tu.getParentUnit().equals(ONE) &&

+		// (tu.getConverterTo(tu.toMetric()) instanceof RationalConverter);

+		return true;

+	}

+

+	/**

+	 * Returns the inverse of this unit.

+	 * 

+	 * @return <code>1 / this</code>

+	 */

+	@SuppressWarnings({ "unchecked", "rawtypes" })

+	public final Unit<?> inverse() {

+		if (this.equals(ONE))

+			return this;

+		if (this.isRationalFactor())

+			return this.transform(this.getConverterTo((Unit) ONE).inverse());

+		return ProductUnit.getQuotientInstance(ONE, this);

+	}

+

+	public boolean isCompatible(Unit<?> that) {

+		return (this == that)

+				|| this.toMetric().equals(that.getSystemUnit())

+				|| (!"".equals(this.getDimension().toString()) && this.getDimension().equals(that.getDimension())); //$NON-NLS-1$

+	}

+

+	/**

+	 * Returns the result of multiplying this unit by an exact factor.

+	 * 

+	 * @param factor

+	 *            the exact scale factor (e.g.

+	 *            <code>KILOMETRE = METRE.multiply(1000)</code>).

+	 * @return <code>this.transform(new RationalConverter(factor, 1))</code>

+	 */

+	final Unit<IMoney> multiply(long factor) {

+		if (factor == 1)

+			return this;

+		return transform(new RationalConverter(BigInteger.valueOf(factor),

+				BigInteger.ONE));

+	}

+

+	/**

+	 * Returns the result of multiplying this unit by a an approximate factor.

+	 * 

+	 * @param factor

+	 *            the approximate factor (e.g.

+	 *            <code>ELECTRON_MASS = KILOGRAM.multiply(9.10938188e-31)</code>

+	 *            ).

+	 * @return <code>this.transform(new MultiplyConverter(factor))</code>

+	 */

+	public final Unit<IMoney> multiply(double factor) {

+		if (factor == 1)

+			return this;

+		return transform(new MultiplyConverter(factor));

+	}

+

+	/**

+	 * Returns the product of this unit with the one specified.

+	 * 

+	 * @param that

+	 *            the unit multiplicand.

+	 * @return <code>this * that</code>

+	 */

+	@SuppressWarnings({ "unchecked", "rawtypes" })

+	public final Unit<?> multiply(Unit<?> that) {

+		if (this.equals(ONE))

+			return that;

+		if (that.equals(ONE))

+			return this;

+		if (this.isRationalFactor())

+			return that.transform(this.getConverterTo(ONE));

+		if (((MoneyUnit<?>) that).isRationalFactor())

+			return this.transform(that.getConverterTo((Unit) ONE));

+		return ProductUnit.getProductInstance(this, (AbstractUnit<?>) that);

+	}

+

+	/**

+	 * Returns a unit equals to this unit raised to an exponent.

+	 * 

+	 * @param n

+	 *            the exponent.

+	 * @return the result of raising this unit to the exponent.

+	 */

+	public final Unit<?> pow(int n) {

+		if (n > 0)

+			return this.multiply(this.pow(n - 1));

+		else if (n == 0)

+			return ONE;

+		else

+			// n < 0

+			return ONE.divide(this.pow(-n));

+	}

+

+	/**

+	 * Returns a unit equals to the given root of this unit.

+	 * 

+	 * @param n

+	 *            the root's order.

+	 * @return the result of taking the given root of this unit.

+	 * @throws ArithmeticException

+	 *             if <code>n == 0</code> or if this operation would result in

+	 *             an unit with a fractional exponent.

+	 */

+	public final Unit<?> root(int n) {

+		if (n > 0)

+			return ProductUnit.getRootInstance(this, n);

+		else if (n == 0)

+			throw new ArithmeticException("Root's order of zero"); //$NON-NLS-1$

+		else

+			// n < 0

+			return ONE.divide(this.root(-n));

+	}

+

+	protected Unit<IMoney> toMetric() {

+		return this;

+	}

+

+	/**

+	 * Returns the unit derived from this unit using the specified converter.

+	 * The converter does not need to be linear. For example:[code]

+	 * Unit<Dimensionless> DECIBEL = Unit.ONE.transform( new

+	 * LogConverter(10).inverse().concatenate( new RationalConverter(1, 10)));

+	 * [/code]

+	 * 

+	 * @param operation

+	 *            the converter from the transformed unit to this unit.

+	 * @return the unit after the specified transformation.

+	 */

+	@SuppressWarnings("unchecked")

+	public final Unit<IMoney> transform(UnitConverter operation) {

+		if (this instanceof Unit<?>) {

+			Unit<IMoney> tf = this;

+			Unit<?> parent = (Unit<?>) ((TransformedUnit<?>) tf)

+					.getParentUnit();

+			UnitConverter toParent = ((TransformedUnit<?>) tf).toParentUnit();

+			if (toParent == null)

+				return (Unit<IMoney>) parent;

+			UnitConverter toParentConcat = toParent.concatenate(operation);

+			if (toParentConcat == AbstractConverter.IDENTITY)

+				return (Unit<IMoney>) parent;

+			return new TransformedUnit<IMoney>((Unit<IMoney>) parent,

+					(AbstractConverter) toParentConcat);

+		}

+		if (operation == AbstractConverter.IDENTITY)

+			return this;

+		return new TransformedUnit<IMoney>(this, (AbstractConverter) operation);

+	}

+

+	/**

+	 * Returns the quotient of this unit with the one specified.

+	 * 

+	 * @param that

+	 *            the unit divisor.

+	 * @return <code>this / that</code>

+	 */

+	public final Unit<?> divide(Unit<?> that) {

+		return (Unit<?>) this.multiply(that.inverse());

+	}

+

+	public String getName() {

+		return getName(ULocale.getDefault(), LONG_NAME, new boolean[] { false });

+	}

+

+	public Unit<IMoney> getSystemUnit() {

+		return toMetric();

+	}

+	 

+	/**

+	 * Get the namespace of this {@link CurrencyUnit}, default 'ISO-4217'.

+	 */

+	public String getNamespace() {

+		return namespace;

+	}

+	 

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see CurrencyUnit#isLegalTender()

+	 */

+	public boolean isLegalTender() {

+		return legalTender;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see CurrencyUnit#isVirtual()

+	 */

+	public boolean isVirtual() {

+		return virtual;

+	}

+	 

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see CurrencyUnit#getValidFrom()

+	 */

+	

+	public Long getValidFrom() {

+		return validFrom;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see CurrencyUnit#getValidUntil()

+	 */

+	

+	public Long getValidUntil() {

+		return validUntil;

+	}

+

+	public int compareTo(CurrencyUnit currency) {

+		int compare = getNamespace().compareTo(currency.getNamespace());

+		if (compare == 0) {

+			compare = getCurrencyCode().compareTo(currency.getCurrencyCode());

+		}

+		if (compare == 0) {

+			if (validFrom == null && currency.getValidFrom() != null) {

+				compare = -1;

+			} else if (validFrom != null && currency.getValidFrom() == null) {

+				compare = 1;

+			} else if (validFrom != null) {

+				compare = validFrom.compareTo(currency.getValidFrom());

+			}

+		}

+		if (compare == 0) {

+			if (validUntil == null && currency.getValidUntil() != null) {

+				compare = -1;

+			} else if (validUntil != null && currency.getValidUntil() == null) {

+				compare = 1;

+			} else if (validUntil != null) {

+				compare = validUntil.compareTo(currency.getValidUntil());

+			}

+		}

+		return compare;

+	}

+	

+	/**

+	 * Access a new instance based on the ISO currency code. The code must

+	 * return a {@link Currency} when passed to

+	 * {@link Currency#getInstance(String)}.

+	 * 

+	 * @param currencyCode

+	 *            the ISO currency code, not null.

+	 * @return the corresponding {@link MonetaryCurrency} instance.

+	 */

+	public static MoneyUnit of(String currencyCode) {

+		return new MoneyUnit(currencyCode);

+	}

+

+//	public String getDisplayName(Locale locale) {

+//		return getName(ULocale.forLocale(locale), LONG_NAME, new boolean[1]);

+//	}

+//

+//	public int getNumericCode() {

+//		return -1;

+//	}

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/BDTypeException.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/BDTypeException.java
index dafd4d2..e26e439 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/BDTypeException.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/BDTypeException.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.business.types;
-
-import org.eclipse.uomo.core.UOMoRuntimeException;
-
-
-/**
- * Basic Data Type Exception class
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @deprecated Try using UOMoRuntimeException directly
- */
-public class BDTypeException extends UOMoRuntimeException  {
-	final static long serialVersionUID = 362498820763181265L;
-/**
- * BDTypeException constructor with String.
- */
-public BDTypeException(String s)  {
-	super(s);
-	
-}
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.business.types;

+

+import org.eclipse.uomo.core.UOMoRuntimeException;

+

+

+/**

+ * Basic Data Type Exception class

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @deprecated Try using UOMoRuntimeException directly

+ */

+public class BDTypeException extends UOMoRuntimeException  {

+	final static long serialVersionUID = 362498820763181265L;

+/**

+ * BDTypeException constructor with String.

+ */

+public BDTypeException(String s)  {

+	super(s);

+	

+}

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IBasicType.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IBasicType.java
index 97a1fe6..02d019b 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IBasicType.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IBasicType.java
@@ -1,16 +1,16 @@
-package org.eclipse.uomo.business.types;
-
-/**
- * This interface indicates that a class is a Basic Data Type
- * 
- * @author Werner Keil
- */
-public interface IBasicType {
-	
-	/**
-	 * This requires that all Basic Data Types implement a serialize method
-	 * 
-	 * @return java.lang.String
-	 */
-	String serialize();	
-}
+package org.eclipse.uomo.business.types;

+

+/**

+ * This interface indicates that a class is a Basic Data Type

+ * 

+ * @author Werner Keil

+ */

+public interface IBasicType {

+	

+	/**

+	 * This requires that all Basic Data Types implement a serialize method

+	 * 

+	 * @return java.lang.String

+	 */

+	String serialize();	

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IMarket.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IMarket.java
index 0c8cd78..365feae 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IMarket.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IMarket.java
@@ -1,92 +1,92 @@
-package org.eclipse.uomo.business.types;
-
-import java.util.*;
-
-import org.eclipse.uomo.core.IName;
-import org.eclipse.uomo.core.ISymbol;
-import org.unitsofmeasurement.quantity.Time;
-import org.unitsofmeasurement.unit.Unit;
-
-import com.ibm.icu.util.Holiday;
-
-/**
- * Insert the type's description here. Creation date: (9/20/00 2:35:47 PM)
- * @version $Revision$, Change date: ($Date$)
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- */
-public interface IMarket extends IBDType, IName, ISymbol {
-	/**
-	 * Insert the method's description here. Creation date: (9/26/00 4:55:31 PM)
-	 * 
-	 * @return java.util.HashMap
-	 */
-	Map<Date, Holiday> getHolidays();
-
-	/**
-	 * Insert the method's description here. Creation date: (9/28/00 9:43:08 AM)
-	 * 
-	 * @return java.util.HashMap
-	 */
-	Map<Date, Holiday> getReplHolidays();
-
-	/**
-	 * Insert the method's description here. Creation date: (9/25/00 10:25:18
-	 * AM)
-	 * 
-	 * @return java.util.HashMap
-	 */
-	Map<String, List<Time>> getTimes();
-
-	/**
-	 * Insert the method's description here. Creation date: (9/25/00 4:36:09 PM)
-	 * 
-	 * @return java.lang.String
-	 */
-	String getTimeZone();
-
-	/**
-	 * Returns true if market is open for specified date and FI Type
-	 * 
-	 * @return boolean
-	 */
-	public boolean isOpen(Date date, String fiType);
-
-	/**
-	 * Returns true if market is open for specified time and FI Type
-	 * 
-	 * @return boolean
-	 */
-	public boolean isOpen(Unit<Time> ts, String fiType);
-
-	/**
-	 * Returns true if market is open right now for specified FIType
-	 * 
-	 * @return boolean
-	 */
-	public boolean isOpen(String fiType);
-
-	/**
-	 * Insert the method's description here. Creation date: (9/26/00 4:52:54 PM)
-	 * 
-	 * @param hm
-	 *            java.util.HashMap
-	 */
-	void setHolidays(Map<Date, Holiday> hm);
-
-	/**
-	 * Insert the method's description here. Creation date: (9/26/00 4:52:54 PM)
-	 * 
-	 * @param hm
-	 *            java.util.HashMap
-	 */
-	void setReplHolidays(Map<Date, Holiday> hm);
-
-	/**
-	 * Insert the method's description here. Creation date: (9/25/00 10:25:57
-	 * AM)
-	 * 
-	 * @param hm
-	 *            java.util.HashMap
-	 */
-	void setTimes(Map<String, List<Time>> hm);
-}
+package org.eclipse.uomo.business.types;

+

+import java.util.*;

+

+import org.eclipse.uomo.core.IName;

+import org.eclipse.uomo.core.ISymbol;

+import org.unitsofmeasurement.quantity.Time;

+import org.unitsofmeasurement.unit.Unit;

+

+import com.ibm.icu.util.Holiday;

+

+/**

+ * Insert the type's description here. Creation date: (9/20/00 2:35:47 PM)

+ * @version $Revision$, Change date: ($Date$)

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ */

+public interface IMarket extends IBDType, IName, ISymbol {

+	/**

+	 * Insert the method's description here. Creation date: (9/26/00 4:55:31 PM)

+	 * 

+	 * @return java.util.HashMap

+	 */

+	Map<Date, Holiday> getHolidays();

+

+	/**

+	 * Insert the method's description here. Creation date: (9/28/00 9:43:08 AM)

+	 * 

+	 * @return java.util.HashMap

+	 */

+	Map<Date, Holiday> getReplHolidays();

+

+	/**

+	 * Insert the method's description here. Creation date: (9/25/00 10:25:18

+	 * AM)

+	 * 

+	 * @return java.util.HashMap

+	 */

+	Map<String, List<Time>> getTimes();

+

+	/**

+	 * Insert the method's description here. Creation date: (9/25/00 4:36:09 PM)

+	 * 

+	 * @return java.lang.String

+	 */

+	String getTimeZone();

+

+	/**

+	 * Returns true if market is open for specified date and FI Type

+	 * 

+	 * @return boolean

+	 */

+	public boolean isOpen(Date date, String fiType);

+

+	/**

+	 * Returns true if market is open for specified time and FI Type

+	 * 

+	 * @return boolean

+	 */

+	public boolean isOpen(Unit<Time> ts, String fiType);

+

+	/**

+	 * Returns true if market is open right now for specified FIType

+	 * 

+	 * @return boolean

+	 */

+	public boolean isOpen(String fiType);

+

+	/**

+	 * Insert the method's description here. Creation date: (9/26/00 4:52:54 PM)

+	 * 

+	 * @param hm

+	 *            java.util.HashMap

+	 */

+	void setHolidays(Map<Date, Holiday> hm);

+

+	/**

+	 * Insert the method's description here. Creation date: (9/26/00 4:52:54 PM)

+	 * 

+	 * @param hm

+	 *            java.util.HashMap

+	 */

+	void setReplHolidays(Map<Date, Holiday> hm);

+

+	/**

+	 * Insert the method's description here. Creation date: (9/25/00 10:25:57

+	 * AM)

+	 * 

+	 * @param hm

+	 *            java.util.HashMap

+	 */

+	void setTimes(Map<String, List<Time>> hm);

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IMoney.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IMoney.java
index 7f5228c..2a43dcf 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IMoney.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/IMoney.java
@@ -1,33 +1,33 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.business.types;
-
-import static org.eclipse.uomo.business.money.MoneyAmount.UNIT;
-
-import org.eclipse.uomo.units.IMeasure;
-import org.unitsofmeasurement.unit.Dimension;
-
-/**
- * This interface represents something generally accepted as a medium of
- * exchange, a measure of value, or a means of payment. The units for money
- * quantities is of type {@link Currency}.
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 3.2 ($Revision: 227 $), $Date: 2010-10-01 00:54:55 +0200 (Fr, 01 Okt 2010) $
- */
-public interface IMoney extends IBDType, IMeasure<IMoney> {
-
-    /**
-     * Holds the dimension for money quantities (dimension [$]).
-     */
-    public static final Dimension DIMENSION = UNIT.getDimension();
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.business.types;

+

+import static org.eclipse.uomo.business.money.MoneyAmount.UNIT;

+

+import org.eclipse.uomo.units.IMeasure;

+import org.unitsofmeasurement.unit.Dimension;

+

+/**

+ * This interface represents something generally accepted as a medium of

+ * exchange, a measure of value, or a means of payment. The units for money

+ * quantities is of type {@link Currency}.

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 3.2 ($Revision: 227 $), $Date: 2010-10-01 00:54:55 +0200 (Fr, 01 Okt 2010) $

+ */

+public interface IMoney extends IBDType, IMeasure<IMoney> {

+

+    /**

+     * Holds the dimension for money quantities (dimension [$]).

+     */

+    public static final Dimension DIMENSION = UNIT.getDimension();

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/BDate.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/BDate.java
index 50a0add..b7ec213 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/BDate.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/BDate.java
@@ -1,148 +1,148 @@
-package org.eclipse.uomo.business.types.impl;
-
-import static org.eclipse.uomo.business.types.impl.DataHelper.BDT_DELIM;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-import org.eclipse.uomo.business.types.IBasicType;
-import org.eclipse.uomo.core.UOMoRuntimeException;
-
-/**
- * Define (non-Java.util) Date class
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- */
-public class BDate implements IBasicType {
-	String m_date;
-
-	/**
-	 * Constructor for date with no parameter - use current date in this locale
-	 * - dangerous!
-	 */
-
-	public BDate() {
-
-		Calendar cal = new GregorianCalendar();
-
-		java.util.Date date = cal.getTime();
-
-		TimeStamp ts = new TimeStamp(date.getTime());
-		m_date = ts.serialize().substring(0, 8);
-
-	}
-
-	/**
-	 * Constructor for date with date string (yyyymmdd); optional calendar and
-	 * era are being ignored for now
-	 */
-
-	public BDate(String s) {
-		super();
-		m_date = BuildDate(s);
-	}
-
-	/**
-	 * Constructor for jbdtypes Date using java.sql.Date
-	 */
-
-	public BDate(java.sql.Date dt) {
-		long millis = dt.getTime();
-		TimeStamp ts = new TimeStamp(millis);
-
-		m_date = BuildDate(ts.serialize().substring(0, 8));
-	}
-
-	/**
-	 * Return true if <code>this</code> date is after specified date
-	 * 
-	 * @return boolean
-	 * @param d
-	 *            com.jpmorrsn.jbdtypes.Date
-	 */
-	public boolean after(BDate d) {
-		return Integer.parseInt(this.m_date) > Integer.parseInt(d.m_date);
-	}
-
-	/**
-	 * Return true if <code>this</code> date is before specified date
-	 * 
-	 * @return boolean
-	 * @param d
-	 *            com.jpmorrsn.jbdtypes.Date
-	 */
-	public boolean before(BDate d) {
-		return Integer.parseInt(this.m_date) < Integer.parseInt(d.m_date);
-	}
-
-	/**
-	 * Strip off calendar and era (if any)
-	 * 
-	 * @return java.lang.String
-	 * @param s
-	 *            java.lang.String
-	 */
-	static String BuildDate(String s) {
-		int sp = s.indexOf(BDT_DELIM);
-		if (sp == -1)
-			return s;
-		else
-			return s.substring(0, sp);
-	}
-
-	/**
-	 * Build a TimeStamp using specified TimeTz object
-	 * 
-	 * @return com.jpmorrsn.jbdtypes.TimeStamp
-	 * @param t
-	 *            com.jpmorrsn.jbdtypes.TimeTz
-	 * @throws BDTypeException
-	 */
-	public TimeStamp buildTimeStamp(TimeTz t) throws UOMoRuntimeException {
-
-		return new TimeStamp(m_date + 'T' + t.serialize());
-	}
-
-	/**
-	 * Convert this Date to a java.sql.Date
-	 * 
-	 * @return java.sql.Timestamp
-	 */
-	public java.sql.Date convertToSQL() {
-
-		TimeStamp ts = new TimeStamp(m_date + "T00:00");
-		return new java.sql.Date(ts.getTime());
-
-	}
-
-	/**
-	 * Return true if <code>this</code> date is same as specified date
-	 * 
-	 * @return boolean
-	 * @param d
-	 *            com.jpmorrsn.jbdtypes.Date
-	 */
-	public boolean equals(BDate d) {
-		return Integer.parseInt(this.m_date) == Integer.parseInt(d.m_date);
-	}
-
-	/**
-	 * Display a (non-Java.util) jbdtypes Date object as an 8-byte string
-	 * 
-	 * @return java.lang.String
-	 */
-	public String serialize() {
-
-		return m_date;
-
-	}
-
-	/**
-	 * Create a String from this object
-	 * 
-	 * @return java.lang.String
-	 */
-	public String toString() {
-		return serialize();
-	}
-}
+package org.eclipse.uomo.business.types.impl;

+

+import static org.eclipse.uomo.business.types.impl.DataHelper.BDT_DELIM;

+

+import java.util.Calendar;

+import java.util.GregorianCalendar;

+

+import org.eclipse.uomo.business.types.IBasicType;

+import org.eclipse.uomo.core.UOMoRuntimeException;

+

+/**

+ * Define (non-Java.util) Date class

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ */

+public class BDate implements IBasicType {

+	String m_date;

+

+	/**

+	 * Constructor for date with no parameter - use current date in this locale

+	 * - dangerous!

+	 */

+

+	public BDate() {

+

+		Calendar cal = new GregorianCalendar();

+

+		java.util.Date date = cal.getTime();

+

+		TimeStamp ts = new TimeStamp(date.getTime());

+		m_date = ts.serialize().substring(0, 8);

+

+	}

+

+	/**

+	 * Constructor for date with date string (yyyymmdd); optional calendar and

+	 * era are being ignored for now

+	 */

+

+	public BDate(String s) {

+		super();

+		m_date = BuildDate(s);

+	}

+

+	/**

+	 * Constructor for jbdtypes Date using java.sql.Date

+	 */

+

+	public BDate(java.sql.Date dt) {

+		long millis = dt.getTime();

+		TimeStamp ts = new TimeStamp(millis);

+

+		m_date = BuildDate(ts.serialize().substring(0, 8));

+	}

+

+	/**

+	 * Return true if <code>this</code> date is after specified date

+	 * 

+	 * @return boolean

+	 * @param d

+	 *            com.jpmorrsn.jbdtypes.Date

+	 */

+	public boolean after(BDate d) {

+		return Integer.parseInt(this.m_date) > Integer.parseInt(d.m_date);

+	}

+

+	/**

+	 * Return true if <code>this</code> date is before specified date

+	 * 

+	 * @return boolean

+	 * @param d

+	 *            com.jpmorrsn.jbdtypes.Date

+	 */

+	public boolean before(BDate d) {

+		return Integer.parseInt(this.m_date) < Integer.parseInt(d.m_date);

+	}

+

+	/**

+	 * Strip off calendar and era (if any)

+	 * 

+	 * @return java.lang.String

+	 * @param s

+	 *            java.lang.String

+	 */

+	static String BuildDate(String s) {

+		int sp = s.indexOf(BDT_DELIM);

+		if (sp == -1)

+			return s;

+		else

+			return s.substring(0, sp);

+	}

+

+	/**

+	 * Build a TimeStamp using specified TimeTz object

+	 * 

+	 * @return com.jpmorrsn.jbdtypes.TimeStamp

+	 * @param t

+	 *            com.jpmorrsn.jbdtypes.TimeTz

+	 * @throws BDTypeException

+	 */

+	public TimeStamp buildTimeStamp(TimeTz t) throws UOMoRuntimeException {

+

+		return new TimeStamp(m_date + 'T' + t.serialize());

+	}

+

+	/**

+	 * Convert this Date to a java.sql.Date

+	 * 

+	 * @return java.sql.Timestamp

+	 */

+	public java.sql.Date convertToSQL() {

+

+		TimeStamp ts = new TimeStamp(m_date + "T00:00");

+		return new java.sql.Date(ts.getTime());

+

+	}

+

+	/**

+	 * Return true if <code>this</code> date is same as specified date

+	 * 

+	 * @return boolean

+	 * @param d

+	 *            com.jpmorrsn.jbdtypes.Date

+	 */

+	public boolean equals(BDate d) {

+		return Integer.parseInt(this.m_date) == Integer.parseInt(d.m_date);

+	}

+

+	/**

+	 * Display a (non-Java.util) jbdtypes Date object as an 8-byte string

+	 * 

+	 * @return java.lang.String

+	 */

+	public String serialize() {

+

+		return m_date;

+

+	}

+

+	/**

+	 * Create a String from this object

+	 * 

+	 * @return java.lang.String

+	 */

+	public String toString() {

+		return serialize();

+	}

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/Market.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/Market.java
index 709cabc..969843e 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/Market.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/Market.java
@@ -1,323 +1,323 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.business.types.impl;
-
-import java.util.*;
-
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.uomo.business.internal.Messages;
-import org.eclipse.uomo.business.types.BDTHelper;
-import org.eclipse.uomo.business.types.BDTypeException;
-import org.eclipse.uomo.business.types.IMarket;
-import org.unitsofmeasurement.quantity.Time;
-import org.unitsofmeasurement.unit.Unit;
-
-import com.ibm.icu.util.Holiday;
-
-/**
- * Market object - object is mutable, but only the holiday table for a market
- * will be changed on a regular basis (plus the closed indicators); open and
- * close times will only be changed at BDT Load time.
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 0.4 ($Revision$), $Date$
- */
-public class Market {
-	static class MarketImpl implements IMarket {
-
-		/**
-		 * Returns true if market is open for specified FIType
-		 * 
-		 * @return boolean
-		 */
-		String m_name;
-		String m_symbol;
-		String m_code = null; // this must be the Reuters code
-
-		String m_timeZone = null; // alpha TimeZone ID - can be used by
-									// TimeStamp methods)
-		String m_openTime = "09:30"; // default values //$NON-NLS-1$
-		String m_closeTime = "16:00"; //     same //$NON-NLS-1$
-		String m_countryCode = null;
-		String m_quoteCurrency = null;
-		Map<String, List<Time>> m_times = null; // HashMap of open and close times
-												// - key is fiType
-
-		Map<Date, Holiday> m_holidays = null; // list of holidays - keyed on date
-		Map<Date, Holiday> m_replHolidays = new HashMap<Date, Holiday>(); // used to build new holiday
-												// list
-		// TODO introdude ICU4J Holiday type and related framework
-		
-		/**
-		 * Returns true if market is open right now for specified FIType
-		 * 
-		 * @return boolean
-		 */
-
-		public boolean isOpen(String fiType) {
-
-			// TimeStamp ts = new TimeStamp(); // set timestamp to right now!
-			// return isOpen(ts, fiType);
-
-			return false;
-
-		}
-
-		/**
-		 * Returns true if market is open at specified time and for specified
-		 * FIType
-		 * 
-		 * @return boolean
-		 */
-
-		public boolean isOpen(Unit<Time> ts, String fiType) {
-
-			if (m_code.equals("M")) { //$NON-NLS-1$
-				System.err
-						.println("Montreal Exchange forced closed for testing!"); //$NON-NLS-1$
-				System.err.println("Remember to correct code later!"); //$NON-NLS-1$
-				return false;
-			}
-
-			String open = m_openTime;
-			String close = m_closeTime;
-			boolean closeInd = false;
-			if (m_times != null) {
-				List list = (List) m_times.get(fiType);
-				closeInd = list.get(0).equals("1"); //$NON-NLS-1$
-				open = (String) list.get(1);
-				close = (String) list.get(2);
-			}
-
-			if (closeInd)
-				return false;
-
-			// try {String nowInTZ = ts.formatWithZone(m_timeZone); // now in
-			// market time zone
-			//
-			// TimeZone tz = TimeTz.GetTimeZone(m_timeZone); // get from
-			// BDTHelper table
-			// String date = nowInTZ.substring(0,8);
-			//
-			// Calendar cal = new GregorianCalendar(tz); // needed to obtain day
-			// of week
-			// cal.setTime(ts);
-			// int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
-			// HashMap hm = getHolidays();
-			// if (dayOfWeek == Calendar.SATURDAY || dayOfWeek ==
-			// Calendar.SUNDAY ||
-			// hm != null && null != hm.get(date)) // or is date in list of
-			// holidays?
-			// return false;
-			//
-			//
-			// TimeStamp tsStart = new TimeStamp(date + 'T' + open + '!' +
-			// m_timeZone);
-			// TimeStamp tsEnd = new TimeStamp(date + 'T' + close + '!' +
-			// m_timeZone);
-			//
-			// if (ts.before(tsStart) || ts.after(tsEnd))
-			// return false;
-			//
-			// }
-			// catch (BDTypeException ex) {
-			// System.err.println("Date error: " + ex);
-			// }
-			//
-			return true;
-
-		}
-
-		/**
-		 * Returns true if market is open for specified Date and FI Type
-		 * (partial dates will be treated as not open); times will not be
-		 * checked at all
-		 * 
-		 * @return boolean
-		 */
-		public boolean isOpen(Date date, String fiType) {
-
-			if (m_code.equals("M")) { //$NON-NLS-1$
-				System.err
-						.println("Montreal Exchange forced closed for testing!"); //$NON-NLS-1$
-				System.err.println("Remember to correct code later!"); //$NON-NLS-1$
-				return false;
-			}
-
-			boolean closeInd = false;
-			if (m_times != null) {
-				List list = (List) m_times.get(fiType);
-				closeInd = list.get(0).equals("1"); //$NON-NLS-1$
-			}
-
-			if (closeInd)
-				return false;
-
-			// try {TimeStamp timeWithinDate = new TimeStamp(date + "T12:00!" +
-			// m_timeZone);
-			//
-			// TimeZone tz = TimeTz.GetTimeZone(m_timeZone); // get from
-			// BDTHelper table
-			// Calendar cal = new GregorianCalendar(tz); // needed to obtain day
-			// of week
-			// cal.setTime(timeWithinDate);
-			// int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
-			// HashMap hm = getHolidays();
-			// if (dayOfWeek == Calendar.SATURDAY || dayOfWeek ==
-			// Calendar.SUNDAY ||
-			// hm != null && null != hm.get(date)) // or is date in list of
-			// holidays?
-			// return false;
-			//
-			//
-			// }
-			// catch (BDTypeException ex) {
-			// System.err.println("Date error: " + ex);
-			// }
-
-			return true;
-
-		}
-
-		/**
-		 * Get HashMap of open/close times
-		 */
-
-		public Map<String, List<Time>> getTimes() {
-			return m_times;
-		}
-
-		/**
-		 * Set HashMap with open/close times
-		 */
-
-		public void setTimes(HashMap<String, List<Time>> hm) {
-			m_times = hm;
-		}
-
-		/**
-		 * Insert the method's description here. Creation date: (9/20/00 2:49:20
-		 * PM)
-		 * 
-		 * @return java.lang.String
-		 */
-		public String serialize() {
-
-			String str = m_code + ';' + m_timeZone + ';' + m_countryCode + ';'
-					+ m_quoteCurrency + ';' + '{';
-			Iterator iter = m_times.keySet().iterator();
-			boolean first = true;
-			while (iter.hasNext()) {
-				if (!first)
-					str = str + ';';
-				first = false;
-				String key = (String) iter.next();
-				List vec = (List) m_times.get(key);
-				str = str
-						+ key
-						+ "={" + vec.get(0) + ';' + vec.get(1) + ';' + vec.get(2) + '}'; //$NON-NLS-1$
-			}
-			str = str + "}{"; //$NON-NLS-1$
-
-			iter = m_holidays.keySet().iterator();
-			first = true;
-			while (iter.hasNext()) {
-				if (!first)
-					str = str + ';';
-				first = false;
-				Date d = (Date) iter.next();
-				str = str + d.toString();
-			}
-			str = str + '}';
-			return str;
-
-		}
-
-		MarketImpl(String s1, String s2, String s3, String s4) {
-			m_code = s1;
-			m_timeZone = s2;
-			m_countryCode = s3;
-			m_quoteCurrency = s4;
-		}
-
-		public String getTimeZone() {
-			return m_timeZone;
-		}
-
-		public synchronized Map<Date, Holiday> getHolidays() {
-			return m_holidays;
-		}
-
-		public synchronized void setHolidays(Map<Date, Holiday> hm) {
-			m_holidays = hm;
-		}
-
-		public Map<Date, Holiday> getReplHolidays() {
-			return m_replHolidays;
-		}
-
-		public void setReplHolidays(Map<Date, Holiday> hm) {
-			m_replHolidays = hm;
-		}
-
-		public void setTimes(Map<String, List<Time>> hm) {
-			m_times = hm;
-		}
-
-		public String getName() {
-			return m_name;
-		}
-
-		public String getSymbol() {
-			return m_symbol;
-		}
-
-	}
-
-	/**
-	 * Insert the method's description here. Creation date: (9/22/00 4:09:05 PM)
-	 * 
-	 * @return com.jpmorrsn.jbdtypes.IMarket
-	 * @param s1
-	 *            java.lang.String
-	 * @param s2
-	 *            java.lang.String
-	 * @param s3
-	 *            java.lang.String
-	 * @param s4
-	 *            java.lang.String
-	 */
-	static IMarket createMarket(String s1, String s2, String s3, String s4) {
-		return new MarketImpl(s1, s2, s3, s4);
-	}
-
-	/**
-	 * Return an IMarket object given the name - return null if string empty
-	 * 
-	 * @return org.eclipse.uomo.business.types.IMarket
-	 * @param s
-	 *            java.lang.String
-	 */
-	public static IMarket get(String s) throws BDTypeException {
-
-		if (s.equals("")) //$NON-NLS-1$
-			return null;
-		else {
-			IMarket mkt = BDTHelper.getMarkets().get(s);
-			if (mkt == null) {
-				// System.err.println("Invalid market code: " + s);
-				throw new BDTypeException(NLS.bind(
-						Messages.Market_invalid_code, s)); //$NON-NLS-1$
-			}
-			return mkt;
-		}
-	}
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.business.types.impl;

+

+import java.util.*;

+

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.uomo.business.internal.Messages;

+import org.eclipse.uomo.business.types.BDTHelper;

+import org.eclipse.uomo.business.types.BDTypeException;

+import org.eclipse.uomo.business.types.IMarket;

+import org.unitsofmeasurement.quantity.Time;

+import org.unitsofmeasurement.unit.Unit;

+

+import com.ibm.icu.util.Holiday;

+

+/**

+ * Market object - object is mutable, but only the holiday table for a market

+ * will be changed on a regular basis (plus the closed indicators); open and

+ * close times will only be changed at BDT Load time.

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 0.4 ($Revision$), $Date$

+ */

+public class Market {

+	static class MarketImpl implements IMarket {

+

+		/**

+		 * Returns true if market is open for specified FIType

+		 * 

+		 * @return boolean

+		 */

+		String m_name;

+		String m_symbol;

+		String m_code = null; // this must be the Reuters code

+

+		String m_timeZone = null; // alpha TimeZone ID - can be used by

+									// TimeStamp methods)

+		String m_openTime = "09:30"; // default values //$NON-NLS-1$

+		String m_closeTime = "16:00"; //     same //$NON-NLS-1$

+		String m_countryCode = null;

+		String m_quoteCurrency = null;

+		Map<String, List<Time>> m_times = null; // HashMap of open and close times

+												// - key is fiType

+

+		Map<Date, Holiday> m_holidays = null; // list of holidays - keyed on date

+		Map<Date, Holiday> m_replHolidays = new HashMap<Date, Holiday>(); // used to build new holiday

+												// list

+		// TODO introdude ICU4J Holiday type and related framework

+		

+		/**

+		 * Returns true if market is open right now for specified FIType

+		 * 

+		 * @return boolean

+		 */

+

+		public boolean isOpen(String fiType) {

+

+			// TimeStamp ts = new TimeStamp(); // set timestamp to right now!

+			// return isOpen(ts, fiType);

+

+			return false;

+

+		}

+

+		/**

+		 * Returns true if market is open at specified time and for specified

+		 * FIType

+		 * 

+		 * @return boolean

+		 */

+

+		public boolean isOpen(Unit<Time> ts, String fiType) {

+

+			if (m_code.equals("M")) { //$NON-NLS-1$

+				System.err

+						.println("Montreal Exchange forced closed for testing!"); //$NON-NLS-1$

+				System.err.println("Remember to correct code later!"); //$NON-NLS-1$

+				return false;

+			}

+

+			String open = m_openTime;

+			String close = m_closeTime;

+			boolean closeInd = false;

+			if (m_times != null) {

+				List list = (List) m_times.get(fiType);

+				closeInd = list.get(0).equals("1"); //$NON-NLS-1$

+				open = (String) list.get(1);

+				close = (String) list.get(2);

+			}

+

+			if (closeInd)

+				return false;

+

+			// try {String nowInTZ = ts.formatWithZone(m_timeZone); // now in

+			// market time zone

+			//

+			// TimeZone tz = TimeTz.GetTimeZone(m_timeZone); // get from

+			// BDTHelper table

+			// String date = nowInTZ.substring(0,8);

+			//

+			// Calendar cal = new GregorianCalendar(tz); // needed to obtain day

+			// of week

+			// cal.setTime(ts);

+			// int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

+			// HashMap hm = getHolidays();

+			// if (dayOfWeek == Calendar.SATURDAY || dayOfWeek ==

+			// Calendar.SUNDAY ||

+			// hm != null && null != hm.get(date)) // or is date in list of

+			// holidays?

+			// return false;

+			//

+			//

+			// TimeStamp tsStart = new TimeStamp(date + 'T' + open + '!' +

+			// m_timeZone);

+			// TimeStamp tsEnd = new TimeStamp(date + 'T' + close + '!' +

+			// m_timeZone);

+			//

+			// if (ts.before(tsStart) || ts.after(tsEnd))

+			// return false;

+			//

+			// }

+			// catch (BDTypeException ex) {

+			// System.err.println("Date error: " + ex);

+			// }

+			//

+			return true;

+

+		}

+

+		/**

+		 * Returns true if market is open for specified Date and FI Type

+		 * (partial dates will be treated as not open); times will not be

+		 * checked at all

+		 * 

+		 * @return boolean

+		 */

+		public boolean isOpen(Date date, String fiType) {

+

+			if (m_code.equals("M")) { //$NON-NLS-1$

+				System.err

+						.println("Montreal Exchange forced closed for testing!"); //$NON-NLS-1$

+				System.err.println("Remember to correct code later!"); //$NON-NLS-1$

+				return false;

+			}

+

+			boolean closeInd = false;

+			if (m_times != null) {

+				List list = (List) m_times.get(fiType);

+				closeInd = list.get(0).equals("1"); //$NON-NLS-1$

+			}

+

+			if (closeInd)

+				return false;

+

+			// try {TimeStamp timeWithinDate = new TimeStamp(date + "T12:00!" +

+			// m_timeZone);

+			//

+			// TimeZone tz = TimeTz.GetTimeZone(m_timeZone); // get from

+			// BDTHelper table

+			// Calendar cal = new GregorianCalendar(tz); // needed to obtain day

+			// of week

+			// cal.setTime(timeWithinDate);

+			// int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

+			// HashMap hm = getHolidays();

+			// if (dayOfWeek == Calendar.SATURDAY || dayOfWeek ==

+			// Calendar.SUNDAY ||

+			// hm != null && null != hm.get(date)) // or is date in list of

+			// holidays?

+			// return false;

+			//

+			//

+			// }

+			// catch (BDTypeException ex) {

+			// System.err.println("Date error: " + ex);

+			// }

+

+			return true;

+

+		}

+

+		/**

+		 * Get HashMap of open/close times

+		 */

+

+		public Map<String, List<Time>> getTimes() {

+			return m_times;

+		}

+

+		/**

+		 * Set HashMap with open/close times

+		 */

+

+		public void setTimes(HashMap<String, List<Time>> hm) {

+			m_times = hm;

+		}

+

+		/**

+		 * Insert the method's description here. Creation date: (9/20/00 2:49:20

+		 * PM)

+		 * 

+		 * @return java.lang.String

+		 */

+		public String serialize() {

+

+			String str = m_code + ';' + m_timeZone + ';' + m_countryCode + ';'

+					+ m_quoteCurrency + ';' + '{';

+			Iterator iter = m_times.keySet().iterator();

+			boolean first = true;

+			while (iter.hasNext()) {

+				if (!first)

+					str = str + ';';

+				first = false;

+				String key = (String) iter.next();

+				List vec = (List) m_times.get(key);

+				str = str

+						+ key

+						+ "={" + vec.get(0) + ';' + vec.get(1) + ';' + vec.get(2) + '}'; //$NON-NLS-1$

+			}

+			str = str + "}{"; //$NON-NLS-1$

+

+			iter = m_holidays.keySet().iterator();

+			first = true;

+			while (iter.hasNext()) {

+				if (!first)

+					str = str + ';';

+				first = false;

+				Date d = (Date) iter.next();

+				str = str + d.toString();

+			}

+			str = str + '}';

+			return str;

+

+		}

+

+		MarketImpl(String s1, String s2, String s3, String s4) {

+			m_code = s1;

+			m_timeZone = s2;

+			m_countryCode = s3;

+			m_quoteCurrency = s4;

+		}

+

+		public String getTimeZone() {

+			return m_timeZone;

+		}

+

+		public synchronized Map<Date, Holiday> getHolidays() {

+			return m_holidays;

+		}

+

+		public synchronized void setHolidays(Map<Date, Holiday> hm) {

+			m_holidays = hm;

+		}

+

+		public Map<Date, Holiday> getReplHolidays() {

+			return m_replHolidays;

+		}

+

+		public void setReplHolidays(Map<Date, Holiday> hm) {

+			m_replHolidays = hm;

+		}

+

+		public void setTimes(Map<String, List<Time>> hm) {

+			m_times = hm;

+		}

+

+		public String getName() {

+			return m_name;

+		}

+

+		public String getSymbol() {

+			return m_symbol;

+		}

+

+	}

+

+	/**

+	 * Insert the method's description here. Creation date: (9/22/00 4:09:05 PM)

+	 * 

+	 * @return com.jpmorrsn.jbdtypes.IMarket

+	 * @param s1

+	 *            java.lang.String

+	 * @param s2

+	 *            java.lang.String

+	 * @param s3

+	 *            java.lang.String

+	 * @param s4

+	 *            java.lang.String

+	 */

+	static IMarket createMarket(String s1, String s2, String s3, String s4) {

+		return new MarketImpl(s1, s2, s3, s4);

+	}

+

+	/**

+	 * Return an IMarket object given the name - return null if string empty

+	 * 

+	 * @return org.eclipse.uomo.business.types.IMarket

+	 * @param s

+	 *            java.lang.String

+	 */

+	public static IMarket get(String s) throws BDTypeException {

+

+		if (s.equals("")) //$NON-NLS-1$

+			return null;

+		else {

+			IMarket mkt = BDTHelper.getMarkets().get(s);

+			if (mkt == null) {

+				// System.err.println("Invalid market code: " + s);

+				throw new BDTypeException(NLS.bind(

+						Messages.Market_invalid_code, s)); //$NON-NLS-1$

+			}

+			return mkt;

+		}

+	}

+}

diff --git a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/TimeStamp.java b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/TimeStamp.java
index 7d0f887..1623160 100644
--- a/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/TimeStamp.java
+++ b/bundles/org.eclipse.uomo.business/src/main/java/org/eclipse/uomo/business/types/impl/TimeStamp.java
@@ -1,318 +1,318 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.business.types.impl;
-
-import static org.eclipse.uomo.business.types.impl.DataHelper.BDT_DELIM;
-
-import java.text.SimpleDateFormat;
-import java.text.ParsePosition;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.TimeZone;
-import java.sql.Timestamp;
-
-import org.eclipse.uomo.business.types.IBasicType;
-import org.eclipse.uomo.core.UOMoRuntimeException;
-
-/**
- * Timestamp extends java.util.Date, which goes down to the millisecond
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- */
-public class TimeStamp extends java.util.Date implements IBasicType {
-	final static long serialVersionUID = 362498820763181265L;
-
-	/**
-	 * TimeStamp constructor - sets a TimeStamp to the current time
-	 */
-	public TimeStamp() {
-		super((TimeStamp.BuildTimeStamp()).getTime());
-
-	}
-
-	/**
-	 * TimeStamp constructor with millisecs (long)
-	 */
-	public TimeStamp(long m) {
-		super(m);
-
-	}
-
-	/**
-	 * TimeStamp constructor with String. buildTimeStamp returns a TimeStamp
-	 * object, which can't be used directly, so we use getTime
-	 * 
-	 * @throws UOMoRuntimeException
-	 */
-	public TimeStamp(String s) throws UOMoRuntimeException {
-		super((TimeStamp.BuildTimeStamp(s)).getTime());
-	}
-
-	/**
-	 * TimeStamp constructor with a java.sql.Timestamp buildTimeStamp returns a
-	 * TimeStamp object, which can't be used directly, so we use
-	 * getTime
-	 * 
-	 * @throws UOMoRuntimeException
-	 */
-	public TimeStamp(Timestamp ts) throws UOMoRuntimeException {
-		super((TimeStamp.BuildTimeStamp(ts)).getTime());
-	}
-
-	/**
-	 * Create a TimeStamp object using current time
-	 * 
-	 * @return TimeStamp
-	 */
-	static TimeStamp BuildTimeStamp() {
-
-		Calendar aGregCal = new GregorianCalendar();
-
-		java.util.Date date = aGregCal.getTime();
-		return new TimeStamp(date.getTime());
-	}
-
-	/**
-	 * Create an (non-Java.util) TimeStamp using a String. This has format
-	 * ccyymmddThh:mm:ssttt!zone;calendar;era where zone is an alpha time zone
-	 * name known to UOMo; calendar and era are optional. The time from :ss
-	 * is also optional. Instead of !zone, you may instead use Ahh:mm, where A
-	 * is + or -; in this case, no daylight savings time logic is available. If
-	 * adjustment and time zone are both missing, treat as 0, i.e. time is UTC
-	 * If an adjustment is present, the sign is as normally used to identify the
-	 * time zone - i.e. the offset needed to convert UTC to local time, even
-	 * though the first part is local time. This means that, to compute the UTC,
-	 * the sign must be reversed - i.e. local time 08:00 am in the EDT zone will
-	 * be represented as 08:00-04:00, so that UTC is computed by adding the two
-	 * values together. Calendar and era will be ignored for now.
-	 * 
-	 * @return TimeStamp
-	 * @param s
-	 *            java.lang.String
-	 * @throws UOMoRuntimeException
-	 */
-	static TimeStamp BuildTimeStamp(String s) throws UOMoRuntimeException {
-		String str;
-		int sp = s.indexOf(BDT_DELIM); // strip off calendar and/or era
-		if (sp == -1)
-			str = s;
-		else
-			str = s.substring(0, sp);
-
-		String adj = null;
-		TimeZone tz = null;
-
-		sp = str.indexOf('!');
-
-		if (sp > -1) {
-			String zoneString = str.substring(sp + 1);
-			tz = TimeTz.GetTimeZone(zoneString);
-			if (tz == null)
-				throw new UOMoRuntimeException("Time Zone not found: "
-						+ zoneString);
-			str = str.substring(0, sp);
-		}
-
-		else {
-			sp = str.indexOf('+');
-			if (sp == -1)
-				sp = str.indexOf('-');
-			if (sp > -1) {
-				adj = str.substring(sp);
-				str = str.substring(0, sp);
-			}
-		}
-
-		if (str.length() < 14)
-			throw new UOMoRuntimeException("Timestamp too short: " + s);
-
-		if (str.charAt(8) != 'T' || str.charAt(11) != ':')
-			throw new UOMoRuntimeException("Invalid TimeStamp: " + s);
-
-		String secs = "00000";
-
-		if (str.length() > 14) {
-			if (str.charAt(14) != ':')
-				throw new UOMoRuntimeException("Invalid TimeStamp: " + s);
-			if (str.length() != 17 && str.length() != 20)
-				throw new UOMoRuntimeException("Invalid TimeStamp: " + s);
-			secs = str.substring(15) + secs;
-			secs = secs.substring(0, 5);
-		}
-		TimeZone zone = TimeZone.getTimeZone("UTC");
-
-		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH:mmssSSS");
-		formatter.setTimeZone(zone);
-
-		String dateString = str.substring(0, 8) + str.substring(9, 14) + secs;
-
-		ParsePosition pos = new ParsePosition(0);
-		java.util.Date date = formatter.parse(dateString, pos);
-		TimeStamp ts = new TimeStamp(date.getTime());
-
-		long millis = 0;
-
-		if (tz != null) {
-			millis = ts.getTime();
-			millis -= tz.getRawOffset();
-			ts.setTime(millis);
-			if (tz.inDaylightTime(ts))
-				millis -= 3600000;
-			ts.setTime(millis);
-		}
-
-		if (adj != null) {
-			int hrs;
-			int mins = 0;
-
-			if (adj.length() == 3)
-				hrs = Integer.parseInt(adj.substring(1));
-			else {
-				if (adj.charAt(3) != ':' || adj.length() != 6)
-					throw new UOMoRuntimeException(
-							"Invalid TimeStamp adjustment: " + s);
-				hrs = Integer.parseInt(adj.substring(1, 3));
-				mins = Integer.parseInt(adj.substring(4, 6));
-			}
-
-			if (adj.charAt(0) == '+') {
-				hrs = -hrs;
-				mins = -mins;
-			} else if (adj.charAt(0) != '-')
-				throw new UOMoRuntimeException(
-						"Invalid TimeStamp adjustment sign: " + s);
-
-			millis = ts.getTime();
-
-			millis += (3600 * hrs + 60 * mins) * 1000;
-
-			ts.setTime(millis);
-		}
-
-		return ts;
-	}
-
-	/**
-	 * Create an TimeStamp using a java.sql.Timestamp. This differs
-	 * from an UOMo TimeStamp in that it goes down to the nanosecond. We
-	 * will therefore lose fractional milliseconds.
-	 * 
-	 * @return TimeStamp
-	 * @param ts
-	 *            java.sql.Timestamp
-	 * @throws UOMoRuntimeException
-	 */
-	static TimeStamp BuildTimeStamp(java.sql.Timestamp ts)
-			throws UOMoRuntimeException {
-		long millis = ts.getTime(); // gets integral number of seconds
-		millis += ts.getNanos() / 1000000;
-		return new TimeStamp(millis);
-	}
-
-	/**
-	 * Convert this TimeStamp to a java.sql.Timestamp
-	 * 
-	 * @return java.sql.Timestamp
-	 */
-	public Timestamp convertToSQL() {
-
-		long millis = getTime() % 1000;
-		java.sql.Timestamp ts = new Timestamp(this.getTime() - millis);
-		ts.setNanos((new Long(millis * 1000000)).intValue());
-		return ts;
-
-	}
-
-	/**
-	 * Format a (non-Java.util) TimeStamp object with specified alpha zone or
-	 * numeric (+/-) zone
-	 * 
-	 * @return java.lang.String
-	 * @throws UOMoRuntimeException
-	 */
-	public String formatWithZone(String s) throws UOMoRuntimeException {
-
-		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH:mm:ssSSS");
-		TimeZone zone = TimeZone.getTimeZone("UTC");
-
-		formatter.setTimeZone(zone);
-
-		long millis = getTime();
-
-		TimeStamp ts = new TimeStamp(millis);
-
-		String z = s;
-
-		if (s.charAt(0) == '+' || s.charAt(0) == '-') {
-			int hrs;
-			int mins = 0;
-
-			if (s.length() == 3)
-				hrs = Integer.parseInt(s.substring(1));
-			else {
-				if (s.charAt(3) != ':' || s.length() != 6)
-					throw new UOMoRuntimeException(
-							"Invalid TimeStamp adjustment: " + s);
-				hrs = Integer.parseInt(s.substring(1, 3));
-				mins = Integer.parseInt(s.substring(4, 6));
-			}
-
-			if (s.charAt(0) == '-') {
-				hrs = -hrs;
-				mins = -mins;
-			}
-			millis += (hrs * 3600 + mins * 60) * 1000;
-			ts.setTime(millis);
-		} else {
-			TimeZone tz = TimeTz.GetTimeZone(s);
-			if (tz == null)
-				throw new UOMoRuntimeException("Time Zone not found: " + s);
-			millis += tz.getRawOffset();
-			ts.setTime(millis);
-			if (tz.inDaylightTime(ts))
-				ts.setTime(millis + 3600000);
-			z = '!' + s;
-		}
-
-		String str = formatter.format(ts);
-		str = str.substring(0, 8) + 'T' + str.substring(8) + z;
-
-		return str;
-
-	}
-
-	/**
-	 * Display a (non-Java.util) TimeStamp object as a 26-byte string
-	 * 
-	 * @return java.lang.String
-	 */
-	public String serialize() {
-
-		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH:mm:ssSSS");
-		TimeZone zone = TimeZone.getTimeZone("UTC");
-
-		formatter.setTimeZone(zone);
-
-		String str = formatter.format(this);
-		str = str.substring(0, 8) + 'T' + str.substring(8) + "+00:00";
-		return str;
-
-	}
-
-	/**
-	 * Create a String from this object
-	 * 
-	 * @return java.lang.String
-	 */
-	public String toString() {
-		return serialize();
-	}
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.business.types.impl;

+

+import static org.eclipse.uomo.business.types.impl.DataHelper.BDT_DELIM;

+

+import java.text.SimpleDateFormat;

+import java.text.ParsePosition;

+import java.util.Calendar;

+import java.util.GregorianCalendar;

+import java.util.TimeZone;

+import java.sql.Timestamp;

+

+import org.eclipse.uomo.business.types.IBasicType;

+import org.eclipse.uomo.core.UOMoRuntimeException;

+

+/**

+ * Timestamp extends java.util.Date, which goes down to the millisecond

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ */

+public class TimeStamp extends java.util.Date implements IBasicType {

+	final static long serialVersionUID = 362498820763181265L;

+

+	/**

+	 * TimeStamp constructor - sets a TimeStamp to the current time

+	 */

+	public TimeStamp() {

+		super((TimeStamp.BuildTimeStamp()).getTime());

+

+	}

+

+	/**

+	 * TimeStamp constructor with millisecs (long)

+	 */

+	public TimeStamp(long m) {

+		super(m);

+

+	}

+

+	/**

+	 * TimeStamp constructor with String. buildTimeStamp returns a TimeStamp

+	 * object, which can't be used directly, so we use getTime

+	 * 

+	 * @throws UOMoRuntimeException

+	 */

+	public TimeStamp(String s) throws UOMoRuntimeException {

+		super((TimeStamp.BuildTimeStamp(s)).getTime());

+	}

+

+	/**

+	 * TimeStamp constructor with a java.sql.Timestamp buildTimeStamp returns a

+	 * TimeStamp object, which can't be used directly, so we use

+	 * getTime

+	 * 

+	 * @throws UOMoRuntimeException

+	 */

+	public TimeStamp(Timestamp ts) throws UOMoRuntimeException {

+		super((TimeStamp.BuildTimeStamp(ts)).getTime());

+	}

+

+	/**

+	 * Create a TimeStamp object using current time

+	 * 

+	 * @return TimeStamp

+	 */

+	static TimeStamp BuildTimeStamp() {

+

+		Calendar aGregCal = new GregorianCalendar();

+

+		java.util.Date date = aGregCal.getTime();

+		return new TimeStamp(date.getTime());

+	}

+

+	/**

+	 * Create an (non-Java.util) TimeStamp using a String. This has format

+	 * ccyymmddThh:mm:ssttt!zone;calendar;era where zone is an alpha time zone

+	 * name known to UOMo; calendar and era are optional. The time from :ss

+	 * is also optional. Instead of !zone, you may instead use Ahh:mm, where A

+	 * is + or -; in this case, no daylight savings time logic is available. If

+	 * adjustment and time zone are both missing, treat as 0, i.e. time is UTC

+	 * If an adjustment is present, the sign is as normally used to identify the

+	 * time zone - i.e. the offset needed to convert UTC to local time, even

+	 * though the first part is local time. This means that, to compute the UTC,

+	 * the sign must be reversed - i.e. local time 08:00 am in the EDT zone will

+	 * be represented as 08:00-04:00, so that UTC is computed by adding the two

+	 * values together. Calendar and era will be ignored for now.

+	 * 

+	 * @return TimeStamp

+	 * @param s

+	 *            java.lang.String

+	 * @throws UOMoRuntimeException

+	 */

+	static TimeStamp BuildTimeStamp(String s) throws UOMoRuntimeException {

+		String str;

+		int sp = s.indexOf(BDT_DELIM); // strip off calendar and/or era

+		if (sp == -1)

+			str = s;

+		else

+			str = s.substring(0, sp);

+

+		String adj = null;

+		TimeZone tz = null;

+

+		sp = str.indexOf('!');

+

+		if (sp > -1) {

+			String zoneString = str.substring(sp + 1);

+			tz = TimeTz.GetTimeZone(zoneString);

+			if (tz == null)

+				throw new UOMoRuntimeException("Time Zone not found: "

+						+ zoneString);

+			str = str.substring(0, sp);

+		}

+

+		else {

+			sp = str.indexOf('+');

+			if (sp == -1)

+				sp = str.indexOf('-');

+			if (sp > -1) {

+				adj = str.substring(sp);

+				str = str.substring(0, sp);

+			}

+		}

+

+		if (str.length() < 14)

+			throw new UOMoRuntimeException("Timestamp too short: " + s);

+

+		if (str.charAt(8) != 'T' || str.charAt(11) != ':')

+			throw new UOMoRuntimeException("Invalid TimeStamp: " + s);

+

+		String secs = "00000";

+

+		if (str.length() > 14) {

+			if (str.charAt(14) != ':')

+				throw new UOMoRuntimeException("Invalid TimeStamp: " + s);

+			if (str.length() != 17 && str.length() != 20)

+				throw new UOMoRuntimeException("Invalid TimeStamp: " + s);

+			secs = str.substring(15) + secs;

+			secs = secs.substring(0, 5);

+		}

+		TimeZone zone = TimeZone.getTimeZone("UTC");

+

+		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH:mmssSSS");

+		formatter.setTimeZone(zone);

+

+		String dateString = str.substring(0, 8) + str.substring(9, 14) + secs;

+

+		ParsePosition pos = new ParsePosition(0);

+		java.util.Date date = formatter.parse(dateString, pos);

+		TimeStamp ts = new TimeStamp(date.getTime());

+

+		long millis = 0;

+

+		if (tz != null) {

+			millis = ts.getTime();

+			millis -= tz.getRawOffset();

+			ts.setTime(millis);

+			if (tz.inDaylightTime(ts))

+				millis -= 3600000;

+			ts.setTime(millis);

+		}

+

+		if (adj != null) {

+			int hrs;

+			int mins = 0;

+

+			if (adj.length() == 3)

+				hrs = Integer.parseInt(adj.substring(1));

+			else {

+				if (adj.charAt(3) != ':' || adj.length() != 6)

+					throw new UOMoRuntimeException(

+							"Invalid TimeStamp adjustment: " + s);

+				hrs = Integer.parseInt(adj.substring(1, 3));

+				mins = Integer.parseInt(adj.substring(4, 6));

+			}

+

+			if (adj.charAt(0) == '+') {

+				hrs = -hrs;

+				mins = -mins;

+			} else if (adj.charAt(0) != '-')

+				throw new UOMoRuntimeException(

+						"Invalid TimeStamp adjustment sign: " + s);

+

+			millis = ts.getTime();

+

+			millis += (3600 * hrs + 60 * mins) * 1000;

+

+			ts.setTime(millis);

+		}

+

+		return ts;

+	}

+

+	/**

+	 * Create an TimeStamp using a java.sql.Timestamp. This differs

+	 * from an UOMo TimeStamp in that it goes down to the nanosecond. We

+	 * will therefore lose fractional milliseconds.

+	 * 

+	 * @return TimeStamp

+	 * @param ts

+	 *            java.sql.Timestamp

+	 * @throws UOMoRuntimeException

+	 */

+	static TimeStamp BuildTimeStamp(java.sql.Timestamp ts)

+			throws UOMoRuntimeException {

+		long millis = ts.getTime(); // gets integral number of seconds

+		millis += ts.getNanos() / 1000000;

+		return new TimeStamp(millis);

+	}

+

+	/**

+	 * Convert this TimeStamp to a java.sql.Timestamp

+	 * 

+	 * @return java.sql.Timestamp

+	 */

+	public Timestamp convertToSQL() {

+

+		long millis = getTime() % 1000;

+		java.sql.Timestamp ts = new Timestamp(this.getTime() - millis);

+		ts.setNanos((new Long(millis * 1000000)).intValue());

+		return ts;

+

+	}

+

+	/**

+	 * Format a (non-Java.util) TimeStamp object with specified alpha zone or

+	 * numeric (+/-) zone

+	 * 

+	 * @return java.lang.String

+	 * @throws UOMoRuntimeException

+	 */

+	public String formatWithZone(String s) throws UOMoRuntimeException {

+

+		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH:mm:ssSSS");

+		TimeZone zone = TimeZone.getTimeZone("UTC");

+

+		formatter.setTimeZone(zone);

+

+		long millis = getTime();

+

+		TimeStamp ts = new TimeStamp(millis);

+

+		String z = s;

+

+		if (s.charAt(0) == '+' || s.charAt(0) == '-') {

+			int hrs;

+			int mins = 0;

+

+			if (s.length() == 3)

+				hrs = Integer.parseInt(s.substring(1));

+			else {

+				if (s.charAt(3) != ':' || s.length() != 6)

+					throw new UOMoRuntimeException(

+							"Invalid TimeStamp adjustment: " + s);

+				hrs = Integer.parseInt(s.substring(1, 3));

+				mins = Integer.parseInt(s.substring(4, 6));

+			}

+

+			if (s.charAt(0) == '-') {

+				hrs = -hrs;

+				mins = -mins;

+			}

+			millis += (hrs * 3600 + mins * 60) * 1000;

+			ts.setTime(millis);

+		} else {

+			TimeZone tz = TimeTz.GetTimeZone(s);

+			if (tz == null)

+				throw new UOMoRuntimeException("Time Zone not found: " + s);

+			millis += tz.getRawOffset();

+			ts.setTime(millis);

+			if (tz.inDaylightTime(ts))

+				ts.setTime(millis + 3600000);

+			z = '!' + s;

+		}

+

+		String str = formatter.format(ts);

+		str = str.substring(0, 8) + 'T' + str.substring(8) + z;

+

+		return str;

+

+	}

+

+	/**

+	 * Display a (non-Java.util) TimeStamp object as a 26-byte string

+	 * 

+	 * @return java.lang.String

+	 */

+	public String serialize() {

+

+		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH:mm:ssSSS");

+		TimeZone zone = TimeZone.getTimeZone("UTC");

+

+		formatter.setTimeZone(zone);

+

+		String str = formatter.format(this);

+		str = str.substring(0, 8) + 'T' + str.substring(8) + "+00:00";

+		return str;

+

+	}

+

+	/**

+	 * Create a String from this object

+	 * 

+	 * @return java.lang.String

+	 */

+	public String toString() {

+		return serialize();

+	}

+}

diff --git a/bundles/org.eclipse.uomo.core.tests/.classpath b/bundles/org.eclipse.uomo.core.tests/.classpath
index 0b1bcf9..9bc33d3 100644
--- a/bundles/org.eclipse.uomo.core.tests/.classpath
+++ b/bundles/org.eclipse.uomo.core.tests/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.core.tests/.gitignore b/bundles/org.eclipse.uomo.core.tests/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/bundles/org.eclipse.uomo.core.tests/.gitignore
+++ b/bundles/org.eclipse.uomo.core.tests/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/bundles/org.eclipse.uomo.core.tests/.project b/bundles/org.eclipse.uomo.core.tests/.project
index 9ad70dd..9702ecc 100644
--- a/bundles/org.eclipse.uomo.core.tests/.project
+++ b/bundles/org.eclipse.uomo.core.tests/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.core.tests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.core.tests</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/org.eclipse.uomo.core.tests/.settings/.gitignore b/bundles/org.eclipse.uomo.core.tests/.settings/.gitignore
index 0924da4..c14d360 100644
--- a/bundles/org.eclipse.uomo.core.tests/.settings/.gitignore
+++ b/bundles/org.eclipse.uomo.core.tests/.settings/.gitignore
@@ -1 +1 @@
-/org.eclipse.m2e.core.prefs
+/org.eclipse.m2e.core.prefs

diff --git a/bundles/org.eclipse.uomo.core.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.core.tests/META-INF/MANIFEST.MF
index 4d0b866..b48f324 100644
--- a/bundles/org.eclipse.uomo.core.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.core.tests/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UOMO Core Tests
-Bundle-SymbolicName: org.eclipse.uomo.core.tests
-Bundle-Version: 0.7.0.qualifier
-Bundle-Vendor: Eclipse org
-Fragment-Host: org.eclipse.uomo.core;bundle-version="0.7.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.uomo.core.impl;uses:="org.eclipse.uomo.core"
-Require-Bundle: org.junit
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UOMO Core Tests

+Bundle-SymbolicName: org.eclipse.uomo.core.tests

+Bundle-Version: 0.7.0.qualifier

+Bundle-Vendor: Eclipse org

+Fragment-Host: org.eclipse.uomo.core;bundle-version="0.7.0"

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Export-Package: org.eclipse.uomo.core.impl;uses:="org.eclipse.uomo.core"

+Require-Bundle: org.junit

diff --git a/bundles/org.eclipse.uomo.core.tests/build.properties b/bundles/org.eclipse.uomo.core.tests/build.properties
index ced5f40..c4e35e4 100644
--- a/bundles/org.eclipse.uomo.core.tests/build.properties
+++ b/bundles/org.eclipse.uomo.core.tests/build.properties
@@ -1,4 +1,4 @@
-source.. = src/
-output.. = target/classes
-bin.includes = META-INF/,\
-               .
+source.. = src/

+output.. = target/classes

+bin.includes = META-INF/,\

+               .

diff --git a/bundles/org.eclipse.uomo.core.tests/pom.xml b/bundles/org.eclipse.uomo.core.tests/pom.xml
index 7b4aabc..cdbfb2d 100644
--- a/bundles/org.eclipse.uomo.core.tests/pom.xml
+++ b/bundles/org.eclipse.uomo.core.tests/pom.xml
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>org.eclipse.uomo.bundles</artifactId>
-		<groupId>org.eclipse.uomo</groupId>
-		<version>0.7.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>org.eclipse.uomo.core.tests</artifactId>
-	<name>UOMo Core Tests</name>
-	<packaging>eclipse-test-plugin</packaging>
+<?xml version="1.0" encoding="UTF-8"?>

+<project

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<artifactId>org.eclipse.uomo.bundles</artifactId>

+		<groupId>org.eclipse.uomo</groupId>

+		<version>0.7.0-SNAPSHOT</version>

+	</parent>

+	<artifactId>org.eclipse.uomo.core.tests</artifactId>

+	<name>UOMo Core Tests</name>

+	<packaging>eclipse-test-plugin</packaging>

 </project>
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.core.tests/src/log4j.properties b/bundles/org.eclipse.uomo.core.tests/src/log4j.properties
index 18cfaa3..1b4557b 100644
--- a/bundles/org.eclipse.uomo.core.tests/src/log4j.properties
+++ b/bundles/org.eclipse.uomo.core.tests/src/log4j.properties
@@ -1,8 +1,8 @@
-log4j.rootCategory=INFO, stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout.ConversionPattern=%t %p [%c] - %m%n
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.threshold=TRACE
-
-#log4j.logger.org.springframework.osgi=DEBUG
+log4j.rootCategory=INFO, stdout

+log4j.appender.stdout=org.apache.log4j.ConsoleAppender

+log4j.appender.stdout.layout.ConversionPattern=%t %p [%c] - %m%n

+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

+log4j.appender.stdout.threshold=TRACE

+

+#log4j.logger.org.springframework.osgi=DEBUG

 #log4j.logger.org.springframework=DEBUG
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.core.tests/src/org/eclipse/uomo/core/impl/BeanImplTest.java b/bundles/org.eclipse.uomo.core.tests/src/org/eclipse/uomo/core/impl/BeanImplTest.java
index 816e745..0e54980 100644
--- a/bundles/org.eclipse.uomo.core.tests/src/org/eclipse/uomo/core/impl/BeanImplTest.java
+++ b/bundles/org.eclipse.uomo.core.tests/src/org/eclipse/uomo/core/impl/BeanImplTest.java
@@ -1,15 +1,15 @@
-package org.eclipse.uomo.core.impl;
-
-import junit.framework.TestCase;
-
-import org.eclipse.uomo.core.IBean;
-import org.eclipse.uomo.core.impl.Bean;
-
-public class BeanImplTest extends TestCase {
-
-    public void testBeanIsABean() {
-	IBean aBean = new Bean();
-        assertTrue(aBean.isABean());
-    }
-
+package org.eclipse.uomo.core.impl;

+

+import junit.framework.TestCase;

+

+import org.eclipse.uomo.core.IBean;

+import org.eclipse.uomo.core.impl.Bean;

+

+public class BeanImplTest extends TestCase {

+

+    public void testBeanIsABean() {

+	IBean aBean = new Bean();

+        assertTrue(aBean.isABean());

+    }

+

 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.core/.classpath b/bundles/org.eclipse.uomo.core/.classpath
index 710ceaa..7e0a6d5 100644
--- a/bundles/org.eclipse.uomo.core/.classpath
+++ b/bundles/org.eclipse.uomo.core/.classpath
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry exported="true" kind="lib" path="libs/unit-api-0.6.1.jar"/>
-	<classpathentry kind="src" path="src/main/java/"/>
-	<classpathentry kind="src" path="src/main/resources/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry exported="true" kind="lib" path="libs/unit-api-0.6.1.jar"/>

+	<classpathentry kind="src" path="src/main/java/"/>

+	<classpathentry kind="src" path="src/main/resources/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.core/.gitignore b/bundles/org.eclipse.uomo.core/.gitignore
index df81231..f97c089 100644
--- a/bundles/org.eclipse.uomo.core/.gitignore
+++ b/bundles/org.eclipse.uomo.core/.gitignore
@@ -1,3 +1,3 @@
-/target
-/eclipse_config
-/.settings
+/target

+/eclipse_config

+/.settings

diff --git a/bundles/org.eclipse.uomo.core/.project b/bundles/org.eclipse.uomo.core/.project
index f1f433b..90f912b 100644
--- a/bundles/org.eclipse.uomo.core/.project
+++ b/bundles/org.eclipse.uomo.core/.project
@@ -1,60 +1,60 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.core</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.jboss.tools.jst.web.kb.kbbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.jboss.tools.cdi.core.cdibuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.jboss.tools.jst.web.kb.kbnature</nature>
-		<nature>org.jboss.tools.cdi.core.cdinature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.core</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.wst.common.project.facet.core.builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.jboss.tools.jst.web.kb.kbbuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.jboss.tools.cdi.core.cdibuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.wst.validation.validationbuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>

+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>

+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.jboss.tools.jst.web.kb.kbnature</nature>

+		<nature>org.jboss.tools.cdi.core.cdinature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/org.eclipse.uomo.core/libs/README b/bundles/org.eclipse.uomo.core/libs/README
index 9edcad5..3b4d98f 100644
--- a/bundles/org.eclipse.uomo.core/libs/README
+++ b/bundles/org.eclipse.uomo.core/libs/README
@@ -1,3 +1,3 @@
-This jar file is included here because it cannot be downloaded from a public p2 repository at this time.
-
+This jar file is included here because it cannot be downloaded from a public p2 repository at this time.

+

 If this file is included in Orbit - it can be removed.
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IBean.java b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IBean.java
index fa6a020..6162629 100644
--- a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IBean.java
+++ b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IBean.java
@@ -1,25 +1,25 @@
-/******************************************************************************
- * Copyright (c) 1996, 2010, Werner Keil, Creative Arts & Technologies.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   Werner Keil, Creative Arts & Technologies - initial API and implementation
- *****************************************************************************/
-
-package org.eclipse.uomo.core;
-
-/**
- * A bean.
- *
- * @version $Id$
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @deprecated For integration only
- */
-public interface IBean {
-
-    boolean isABean();
-
+/******************************************************************************

+ * Copyright (c) 1996, 2010, Werner Keil, Creative Arts & Technologies.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Werner Keil, Creative Arts & Technologies - initial API and implementation

+ *****************************************************************************/

+

+package org.eclipse.uomo.core;

+

+/**

+ * A bean.

+ *

+ * @version $Id$

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @deprecated For integration only

+ */

+public interface IBean {

+

+    boolean isABean();

+

 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IDescription.java b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IDescription.java
index 72df53e..b66641c 100644
--- a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IDescription.java
+++ b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IDescription.java
@@ -1,22 +1,22 @@
-/******************************************************************************
- * Copyright (c) 1996, 2010, Werner Keil, Creative Arts & Technologies.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   Werner Keil, Creative Arts & Technologies - initial API and implementation
- *****************************************************************************/
-
-package org.eclipse.uomo.core;
-
-/**
- * Denote entity that has a description.
- *
- * @version $Id: IIDescription.java 63 2010-07-19 10:35:31Z werner.keil $
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- */
-public interface IDescription {
-	String getDescription();
+/******************************************************************************

+ * Copyright (c) 1996, 2010, Werner Keil, Creative Arts & Technologies.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Werner Keil, Creative Arts & Technologies - initial API and implementation

+ *****************************************************************************/

+

+package org.eclipse.uomo.core;

+

+/**

+ * Denote entity that has a description.

+ *

+ * @version $Id: IIDescription.java 63 2010-07-19 10:35:31Z werner.keil $

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ */

+public interface IDescription {

+	String getDescription();

 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IValue.java b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IValue.java
index 9671de2..98de649 100644
--- a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IValue.java
+++ b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/IValue.java
@@ -1,22 +1,22 @@
-/******************************************************************************
- * Copyright (c) 2011, 2014 Werner Keil, Creative Arts & Technologies.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   Werner Keil, Creative Arts & Technologies - initial API and implementation
- *****************************************************************************/
-
-package org.eclipse.uomo.core;
-
-/**
- * Denote entity that has a {@code V} value.
- *
- * @version 0.3
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- */
-public interface IValue<V> {
-	V getValue();
+/******************************************************************************

+ * Copyright (c) 2011, 2014 Werner Keil, Creative Arts & Technologies.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Werner Keil, Creative Arts & Technologies - initial API and implementation

+ *****************************************************************************/

+

+package org.eclipse.uomo.core;

+

+/**

+ * Denote entity that has a {@code V} value.

+ *

+ * @version 0.3

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ */

+public interface IValue<V> {

+	V getValue();

 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/impl/Bean.java b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/impl/Bean.java
index 0b124fe..3fcf49d 100644
--- a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/impl/Bean.java
+++ b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/impl/Bean.java
@@ -1,22 +1,22 @@
-/******************************************************************************
- * Copyright (c) 1996, 2010, Werner Keil, Creative Arts & Technologies.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   Werner Keil, Creative Arts & Technologies - initial API and implementation
- *****************************************************************************/
-
-package org.eclipse.uomo.core.impl;
-
-import org.eclipse.uomo.core.IBean;
-
-public class Bean implements IBean {
-
-    public boolean isABean() {
-	return true;
-    }
-
-}
+/******************************************************************************

+ * Copyright (c) 1996, 2010, Werner Keil, Creative Arts & Technologies.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *   Werner Keil, Creative Arts & Technologies - initial API and implementation

+ *****************************************************************************/

+

+package org.eclipse.uomo.core.impl;

+

+import org.eclipse.uomo.core.IBean;

+

+public class Bean implements IBean {

+

+    public boolean isABean() {

+	return true;

+    }

+

+}

diff --git a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/impl/CodeValuePair.java b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/impl/CodeValuePair.java
index 384f193..4ef2777 100644
--- a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/impl/CodeValuePair.java
+++ b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/impl/CodeValuePair.java
@@ -1,50 +1,50 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2014 Werner Keil, Creative Arts & Technologies.
- * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Jiva Medical - initial API and implementation
- *    Werner Keil  - improvements, functional interfaces
- *******************************************************************************/
-
-package org.eclipse.uomo.core.impl;
-
-import org.eclipse.uomo.core.ICode;
-import org.eclipse.uomo.core.IValue;
-
-/**
- * @author Werner Keil
- *
- * @param <V>
- * @param <C>
- */
-public class CodeValuePair<V, C> implements ICode<C>, IValue<V> {
-
-	private V value;
-	private C code;
-	/**
-	 * @param value
-	 * @param code
-	 */
-	public CodeValuePair(V value, C code) {
-		super();
-		this.value = value;
-		this.code = code;
-	}
-	/**
-	 * @return the value
-	 */
-	public V getValue() {
-		return value;
-	}
-	/**
-	 * @return the code
-	 */
-	public C getCode() {
-		return code;
-	}	
-}
+/*******************************************************************************

+ * Copyright (c) 2010, 2014 Werner Keil, Creative Arts & Technologies.

+ * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Jiva Medical - initial API and implementation

+ *    Werner Keil  - improvements, functional interfaces

+ *******************************************************************************/

+

+package org.eclipse.uomo.core.impl;

+

+import org.eclipse.uomo.core.ICode;

+import org.eclipse.uomo.core.IValue;

+

+/**

+ * @author Werner Keil

+ *

+ * @param <V>

+ * @param <C>

+ */

+public class CodeValuePair<V, C> implements ICode<C>, IValue<V> {

+

+	private V value;

+	private C code;

+	/**

+	 * @param value

+	 * @param code

+	 */

+	public CodeValuePair(V value, C code) {

+		super();

+		this.value = value;

+		this.code = code;

+	}

+	/**

+	 * @return the value

+	 */

+	public V getValue() {

+		return value;

+	}

+	/**

+	 * @return the code

+	 */

+	public C getCode() {

+		return code;

+	}	

+}

diff --git a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/internal/Activator.java b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/internal/Activator.java
index 4ff473f..a81ef37 100644
--- a/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/internal/Activator.java
+++ b/bundles/org.eclipse.uomo.core/src/main/java/org/eclipse/uomo/core/internal/Activator.java
@@ -1,50 +1,50 @@
-/**
- * Copyright (c) 2010, 2012 Werner Keil, JScience and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.core.internal;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-/**
- * OSGi part of implementation.
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 0.3 ($Revision$), $Date$
- */
-public class Activator implements BundleActivator {
-	private BundleContext fContext;
-	
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext
-	 * )
-	 */
-	public void start(BundleContext context) throws Exception {
-		fContext = context;
-	}
-
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		// close the service tracker(s)
-		// stopDictionary();
-		fContext = null;
-	}
-
-}
+/**

+ * Copyright (c) 2010, 2012 Werner Keil, JScience and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.core.internal;

+

+import org.osgi.framework.BundleActivator;

+import org.osgi.framework.BundleContext;

+

+/**

+ * OSGi part of implementation.

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 0.3 ($Revision$), $Date$

+ */

+public class Activator implements BundleActivator {

+	private BundleContext fContext;

+	

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext

+	 * )

+	 */

+	public void start(BundleContext context) throws Exception {

+		fContext = context;

+	}

+

+	

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)

+	 */

+	public void stop(BundleContext context) throws Exception {

+		// close the service tracker(s)

+		// stopDictionary();

+		fContext = null;

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.core/src/main/resources/META-INF/spring/bundle-context.xml b/bundles/org.eclipse.uomo.core/src/main/resources/META-INF/spring/bundle-context.xml
index 2459eb0..8c4ef28 100644
--- a/bundles/org.eclipse.uomo.core/src/main/resources/META-INF/spring/bundle-context.xml
+++ b/bundles/org.eclipse.uomo.core/src/main/resources/META-INF/spring/bundle-context.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-  <!-- regular spring configuration file defining the beans for this
-       bundle. We've kept the osgi definitions in a separate 
-       configuration file so that this file can easily be used
-       for integration testing outside of an OSGi environment -->
-
-  <bean name="myBean" class="org.eclipse.uomo.core.impl.BeanImpl" />
-
+<?xml version="1.0" encoding="UTF-8"?>

+<beans xmlns="http://www.springframework.org/schema/beans"

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

+

+  <!-- regular spring configuration file defining the beans for this

+       bundle. We've kept the osgi definitions in a separate 

+       configuration file so that this file can easily be used

+       for integration testing outside of an OSGi environment -->

+

+  <bean name="myBean" class="org.eclipse.uomo.core.impl.BeanImpl" />

+

 </beans>
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.core/src/main/resources/log4j.properties b/bundles/org.eclipse.uomo.core/src/main/resources/log4j.properties
index 18cfaa3..1b4557b 100644
--- a/bundles/org.eclipse.uomo.core/src/main/resources/log4j.properties
+++ b/bundles/org.eclipse.uomo.core/src/main/resources/log4j.properties
@@ -1,8 +1,8 @@
-log4j.rootCategory=INFO, stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout.ConversionPattern=%t %p [%c] - %m%n
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.threshold=TRACE
-
-#log4j.logger.org.springframework.osgi=DEBUG
+log4j.rootCategory=INFO, stdout

+log4j.appender.stdout=org.apache.log4j.ConsoleAppender

+log4j.appender.stdout.layout.ConversionPattern=%t %p [%c] - %m%n

+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

+log4j.appender.stdout.threshold=TRACE

+

+#log4j.logger.org.springframework.osgi=DEBUG

 #log4j.logger.org.springframework=DEBUG
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.ucum.tests/.classpath b/bundles/org.eclipse.uomo.ucum.tests/.classpath
index 0b1bcf9..9bc33d3 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/.classpath
+++ b/bundles/org.eclipse.uomo.ucum.tests/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.ucum.tests/.gitignore b/bundles/org.eclipse.uomo.ucum.tests/.gitignore
index 4dc0091..9f564a8 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/.gitignore
+++ b/bundles/org.eclipse.uomo.ucum.tests/.gitignore
@@ -1,2 +1,2 @@
-/target
-/bin
+/target

+/bin

diff --git a/bundles/org.eclipse.uomo.ucum.tests/.project b/bundles/org.eclipse.uomo.ucum.tests/.project
index 65a1971..c239d3f 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/.project
+++ b/bundles/org.eclipse.uomo.ucum.tests/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.ucum.tests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.ucum.tests</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/org.eclipse.uomo.ucum.tests/.settings/.gitignore b/bundles/org.eclipse.uomo.ucum.tests/.settings/.gitignore
index 0924da4..c14d360 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/.settings/.gitignore
+++ b/bundles/org.eclipse.uomo.ucum.tests/.settings/.gitignore
@@ -1 +1 @@
-/org.eclipse.m2e.core.prefs
+/org.eclipse.m2e.core.prefs

diff --git a/bundles/org.eclipse.uomo.ucum.tests/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.uomo.ucum.tests/.settings/org.eclipse.jdt.core.prefs
index c537b63..f287d53 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.uomo.ucum.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6

+org.eclipse.jdt.core.compiler.compliance=1.6

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.source=1.6

diff --git a/bundles/org.eclipse.uomo.ucum.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.ucum.tests/META-INF/MANIFEST.MF
index 6cb9dee..2178429 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.ucum.tests/META-INF/MANIFEST.MF
@@ -1,13 +1,13 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UCUM Tests
-Bundle-SymbolicName: org.eclipse.uomo.ucum.tests
-Bundle-Version: 0.7.0.qualifier
-Bundle-Vendor: Eclipse.org
-Fragment-Host: org.eclipse.uomo.ucum;bundle-version="0.7.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.uomo.ucum.tests
-Require-Bundle: org.junit;bundle-version="4.8.2",
- org.eclipse.uomo.util;bundle-version="0.7.0",
- org.eclipse.uomo.xml;bundle-version="0.7.0"
-
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UCUM Tests

+Bundle-SymbolicName: org.eclipse.uomo.ucum.tests

+Bundle-Version: 0.7.0.qualifier

+Bundle-Vendor: Eclipse.org

+Fragment-Host: org.eclipse.uomo.ucum;bundle-version="0.7.0"

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Export-Package: org.eclipse.uomo.ucum.tests

+Require-Bundle: org.junit;bundle-version="4.8.2",

+ org.eclipse.uomo.util;bundle-version="0.7.0",

+ org.eclipse.uomo.xml;bundle-version="0.7.0"

+

diff --git a/bundles/org.eclipse.uomo.ucum.tests/build.properties b/bundles/org.eclipse.uomo.ucum.tests/build.properties
index 34d2e4d..41eb6ad 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/build.properties
+++ b/bundles/org.eclipse.uomo.ucum.tests/build.properties
@@ -1,4 +1,4 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .

diff --git a/bundles/org.eclipse.uomo.ucum.tests/etc/org.eclipse.uomo.ucum.tests.launch b/bundles/org.eclipse.uomo.ucum.tests/etc/org.eclipse.uomo.ucum.tests.launch
index 2e7ef92..da2a12b 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/etc/org.eclipse.uomo.ucum.tests.launch
+++ b/bundles/org.eclipse.uomo.ucum.tests/etc/org.eclipse.uomo.ucum.tests.launch
@@ -1,20 +1,20 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.uomo.ucum.tests"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.uomo.ucum.tests"/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
-<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uomo.ucum.tests"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.uomo.ucum.tests"/>

+</listAttribute>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">

+<listEntry value="4"/>

+</listAttribute>

+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">

+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>

+</listAttribute>

+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.uomo.ucum.tests"/>

+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>

+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>

+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>

+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>

+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uomo.ucum.tests"/>

+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>

+</launchConfiguration>

diff --git a/bundles/org.eclipse.uomo.ucum.tests/src/org/eclipse/uomo/ucum/tests/H3ETTestConfiguration.java b/bundles/org.eclipse.uomo.ucum.tests/src/org/eclipse/uomo/ucum/tests/H3ETTestConfiguration.java
index 4a28125..b318597 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/src/org/eclipse/uomo/ucum/tests/H3ETTestConfiguration.java
+++ b/bundles/org.eclipse.uomo.ucum.tests/src/org/eclipse/uomo/ucum/tests/H3ETTestConfiguration.java
@@ -1,55 +1,55 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Jiva Medical - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.tests;
-
-//import org.eclipse.uomo.util.test.UOMoTestConfiguration;
-
-
-
-/*
- * we need some ideas here. 
- * 1. copyright. The testing uses a sample project. It's full of things that are open but
- *    not sufficiently unencumbered to be EPL. So it's on
- *    sourceforge @ https://sourceforge.net/projects/ohf-he3t-test
- * 
- * 2. Local directory. We've given up trying to organise some better way to 
- *    organise where the data resides. So it's a constant here, and you simply
- *    change the constant for your local setup.
- *    
- *     Better ideas are welcome
- */
-
-public interface H3ETTestConfiguration   {
-	
-	/**
-	 * The test workspace, which should contains the test project
-	 * org.eclipse.ohf.h3et.test
-	 * 
-	 * NOTE: current setting assume the test workspace contains two projects:
-	 * * org.eclipse.ohf.h3et.test: with a minimised MIF and its related test data
-	 * * ca.infoway.cerx.mif21: Using the Infoway MIFs settings for more general testing 
-	 */
-	public static final String TEST_WORKSPACE = System.getenv("WORKSPACE") != null ? System.getenv("WORKSPACE") : "C:/workspace/data/";
-//	public static final String TEST_PROJECT 			= TEST_WORKSPACE + "org.eclipse.ohf.h3et.test";
-//	public static final String TEST_PROJECT_VOCAB 		= TEST_PROJECT+"/Vocab";
-//	public static final String TEST_PROJECT_MIF 		= TEST_PROJECT+"/Mif";
-//	public static final String TEST_PROJECT_CASES 		= TEST_PROJECT+"/TestCases";
-//	public static final String TEST_PROJECT_FRAGMENTS 	= TEST_PROJECT+"/Mif/Fragments";
-	
-	public static final String WORK_PROJECT 			= TEST_WORKSPACE + "ca.infoway.cerx.mif21";
-	public static final String WORK_PROJECT_VOCAB 		= WORK_PROJECT+"/Vocab";
-	public static final String WORK_PROJECT_MIF 		= WORK_PROJECT+"/Mif";
-	public static final String WORK_PROJECT_CASES 		= WORK_PROJECT+"/TestCases";
-	public static final String WORK_PROJECT_FRAGMENTS 	= WORK_PROJECT+"/Mif/Fragments";
-	public static final String WORK_PROJECT_TESTFOLDER	= WORK_PROJECT+"/unitTests";
-	
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Jiva Medical - initial API and implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.tests;

+

+//import org.eclipse.uomo.util.test.UOMoTestConfiguration;

+

+

+

+/*

+ * we need some ideas here. 

+ * 1. copyright. The testing uses a sample project. It's full of things that are open but

+ *    not sufficiently unencumbered to be EPL. So it's on

+ *    sourceforge @ https://sourceforge.net/projects/ohf-he3t-test

+ * 

+ * 2. Local directory. We've given up trying to organise some better way to 

+ *    organise where the data resides. So it's a constant here, and you simply

+ *    change the constant for your local setup.

+ *    

+ *     Better ideas are welcome

+ */

+

+public interface H3ETTestConfiguration   {

+	

+	/**

+	 * The test workspace, which should contains the test project

+	 * org.eclipse.ohf.h3et.test

+	 * 

+	 * NOTE: current setting assume the test workspace contains two projects:

+	 * * org.eclipse.ohf.h3et.test: with a minimised MIF and its related test data

+	 * * ca.infoway.cerx.mif21: Using the Infoway MIFs settings for more general testing 

+	 */

+	public static final String TEST_WORKSPACE = System.getenv("WORKSPACE") != null ? System.getenv("WORKSPACE") : "C:/workspace/data/";

+//	public static final String TEST_PROJECT 			= TEST_WORKSPACE + "org.eclipse.ohf.h3et.test";

+//	public static final String TEST_PROJECT_VOCAB 		= TEST_PROJECT+"/Vocab";

+//	public static final String TEST_PROJECT_MIF 		= TEST_PROJECT+"/Mif";

+//	public static final String TEST_PROJECT_CASES 		= TEST_PROJECT+"/TestCases";

+//	public static final String TEST_PROJECT_FRAGMENTS 	= TEST_PROJECT+"/Mif/Fragments";

+	

+	public static final String WORK_PROJECT 			= TEST_WORKSPACE + "ca.infoway.cerx.mif21";

+	public static final String WORK_PROJECT_VOCAB 		= WORK_PROJECT+"/Vocab";

+	public static final String WORK_PROJECT_MIF 		= WORK_PROJECT+"/Mif";

+	public static final String WORK_PROJECT_CASES 		= WORK_PROJECT+"/TestCases";

+	public static final String WORK_PROJECT_FRAGMENTS 	= WORK_PROJECT+"/Mif/Fragments";

+	public static final String WORK_PROJECT_TESTFOLDER	= WORK_PROJECT+"/unitTests";

+	

+}

diff --git a/bundles/org.eclipse.uomo.ucum.tests/src/org/eclipse/uomo/ucum/tests/UcumServiceTest.java b/bundles/org.eclipse.uomo.ucum.tests/src/org/eclipse/uomo/ucum/tests/UcumServiceTest.java
index 6836d28..0e8a84d 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/src/org/eclipse/uomo/ucum/tests/UcumServiceTest.java
+++ b/bundles/org.eclipse.uomo.ucum.tests/src/org/eclipse/uomo/ucum/tests/UcumServiceTest.java
@@ -1,120 +1,120 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2013 Werner Keil.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Werner Keil - initial API and implementation
- *******************************************************************************/
-package org.eclipse.uomo.ucum.tests;
-
-import static org.junit.Assert.*;
-import static org.eclipse.uomo.core.impl.OutputHelper.*;
-
-import java.math.BigDecimal;
-import java.util.Set;
-
-import org.eclipse.uomo.core.UOMoException;
-import org.eclipse.uomo.ucum.UcumService;
-import org.eclipse.uomo.ucum.expression.Symbol;
-import org.eclipse.uomo.ucum.expression.Term;
-import org.eclipse.uomo.ucum.impl.UcumEssenceService;
-import org.eclipse.uomo.ucum.parsers.ExpressionParser;
-import org.eclipse.uomo.util.Parser;
-import org.junit.Before;
-import org.junit.Test;
-import org.unitsofmeasurement.unit.Unit;
-
-import com.ibm.icu.text.DecimalFormat;
-import com.ibm.icu.text.NumberFormat;
-
-
-/**
- * @author Werner Keil
- * @version 1.4, 2013-12-08
- */
-public class UcumServiceTest {
-	private UcumService ucumService;
-	
-	@Before
-	public void init() {
-		if (ucumService == null) {
-			ucumService = new UcumEssenceService(getClass().getClassLoader().getResourceAsStream("ucum-essence.xml"));
-		}
-	}
-	
-	@Test
-	public void testConversion() {
-		Number mult = ucumService.convert(new BigDecimal(1000d), "l", "m3");
-		assertNotNull(mult);		
-		NumberFormat fmt = new DecimalFormat("#,##0.000");
-		assertEquals(fmt.format(BigDecimal.ONE), fmt.format(mult));
-	}
-
-	@Test
-	public void testProperties() {
-		Set<String> props = ucumService.getProperties();
-		if (isConsoleOutput()) {
-			for (String prop : props) {
-				println(prop);
-			}
-		}
-		assertEquals(98, props.size());
-	}
-	
-	
-	@Test
-	public void testParse() {
-		Parser<String, Term> p = new ExpressionParser(ucumService.getModel());
-		try {
-			Term t =  p.parse("m/s2");
-			assertNotNull(t);
-			assertEquals("DIVISION", t.getOp().toString());
-			Symbol s = (Symbol)t.getComp();
-			Unit<?> u = s.getUnit();
-			assertEquals("m", u.getSymbol());
-		} catch (UOMoException e) {
-			println(e.getLocalizedMessage());
-			fail(e.getLocalizedMessage());
-		}
-	}
-	
-	@Test
-	public void testParseParseMult1() {
-		Parser<String, Term> p = new ExpressionParser(ucumService.getModel());
-		try {
-			Term t =  p.parse("m.s2");
-			assertNotNull(t);
-			assertEquals("MULTIPLICATION", t.getOp().toString());
-			Symbol s = (Symbol)t.getComp();
-			Unit<?> u = s.getUnit();
-			assertEquals("m", u.getSymbol());
-		} catch (UOMoException e) {
-			println(e.getLocalizedMessage());
-			fail(e.getLocalizedMessage());
-		}
-	}
-	
-	/**
-	 * @see <a
-     *  href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=371433">Bugzilla: 371433</a>
-	 */
-	@Test
-	public void testParseParseParenthes1() {
-		Parser<String, Term> p = new ExpressionParser(ucumService.getModel());
-		try {
-			Term t =  p.parse("kg/m/s");
-			assertNotNull(t);
-			assertEquals("DIVISION", t.getOp().toString());
-			Symbol s = (Symbol)t.getComp();
-			Unit<?> u = s.getUnit();
-			assertEquals("g", u.getSymbol());
-			assertEquals("k", s.getPrefix().getSymbol());
-		} catch (UOMoException e) {
-			println(e.getLocalizedMessage());
-			fail(e.getLocalizedMessage());
-		}
-	}
-}
+/*******************************************************************************

+ * Copyright (c) 2010, 2013 Werner Keil.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.uomo.ucum.tests;

+

+import static org.junit.Assert.*;

+import static org.eclipse.uomo.core.impl.OutputHelper.*;

+

+import java.math.BigDecimal;

+import java.util.Set;

+

+import org.eclipse.uomo.core.UOMoException;

+import org.eclipse.uomo.ucum.UcumService;

+import org.eclipse.uomo.ucum.expression.Symbol;

+import org.eclipse.uomo.ucum.expression.Term;

+import org.eclipse.uomo.ucum.impl.UcumEssenceService;

+import org.eclipse.uomo.ucum.parsers.ExpressionParser;

+import org.eclipse.uomo.util.Parser;

+import org.junit.Before;

+import org.junit.Test;

+import org.unitsofmeasurement.unit.Unit;

+

+import com.ibm.icu.text.DecimalFormat;

+import com.ibm.icu.text.NumberFormat;

+

+

+/**

+ * @author Werner Keil

+ * @version 1.4, 2013-12-08

+ */

+public class UcumServiceTest {

+	private UcumService ucumService;

+	

+	@Before

+	public void init() {

+		if (ucumService == null) {

+			ucumService = new UcumEssenceService(getClass().getClassLoader().getResourceAsStream("ucum-essence.xml"));

+		}

+	}

+	

+	@Test

+	public void testConversion() {

+		Number mult = ucumService.convert(new BigDecimal(1000d), "l", "m3");

+		assertNotNull(mult);		

+		NumberFormat fmt = new DecimalFormat("#,##0.000");

+		assertEquals(fmt.format(BigDecimal.ONE), fmt.format(mult));

+	}

+

+	@Test

+	public void testProperties() {

+		Set<String> props = ucumService.getProperties();

+		if (isConsoleOutput()) {

+			for (String prop : props) {

+				println(prop);

+			}

+		}

+		assertEquals(98, props.size());

+	}

+	

+	

+	@Test

+	public void testParse() {

+		Parser<String, Term> p = new ExpressionParser(ucumService.getModel());

+		try {

+			Term t =  p.parse("m/s2");

+			assertNotNull(t);

+			assertEquals("DIVISION", t.getOp().toString());

+			Symbol s = (Symbol)t.getComp();

+			Unit<?> u = s.getUnit();

+			assertEquals("m", u.getSymbol());

+		} catch (UOMoException e) {

+			println(e.getLocalizedMessage());

+			fail(e.getLocalizedMessage());

+		}

+	}

+	

+	@Test

+	public void testParseParseMult1() {

+		Parser<String, Term> p = new ExpressionParser(ucumService.getModel());

+		try {

+			Term t =  p.parse("m.s2");

+			assertNotNull(t);

+			assertEquals("MULTIPLICATION", t.getOp().toString());

+			Symbol s = (Symbol)t.getComp();

+			Unit<?> u = s.getUnit();

+			assertEquals("m", u.getSymbol());

+		} catch (UOMoException e) {

+			println(e.getLocalizedMessage());

+			fail(e.getLocalizedMessage());

+		}

+	}

+	

+	/**

+	 * @see <a

+     *  href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=371433">Bugzilla: 371433</a>

+	 */

+	@Test

+	public void testParseParseParenthes1() {

+		Parser<String, Term> p = new ExpressionParser(ucumService.getModel());

+		try {

+			Term t =  p.parse("kg/m/s");

+			assertNotNull(t);

+			assertEquals("DIVISION", t.getOp().toString());

+			Symbol s = (Symbol)t.getComp();

+			Unit<?> u = s.getUnit();

+			assertEquals("g", u.getSymbol());

+			assertEquals("k", s.getPrefix().getSymbol());

+		} catch (UOMoException e) {

+			println(e.getLocalizedMessage());

+			fail(e.getLocalizedMessage());

+		}

+	}

+}

diff --git a/bundles/org.eclipse.uomo.ucum.tests/src/ucum-essence.xml b/bundles/org.eclipse.uomo.ucum.tests/src/ucum-essence.xml
index c6c6c9b..d45b615 100644
--- a/bundles/org.eclipse.uomo.ucum.tests/src/ucum-essence.xml
+++ b/bundles/org.eclipse.uomo.ucum.tests/src/ucum-essence.xml
@@ -1,2062 +1,2062 @@
-<?xml version="1.0" encoding="ascii"?>
-<root xmlns="http://unitsofmeasure.org/ucum-essence" version="1.9"
-      revision="$Revision: 16410 $"
-      revision-date="$Date: 2013-10-21 21:24:43 -0700 (Mon, 21 Oct 2013) $">
-   <prefix xmlns="" Code="Y" CODE="YA">
-      <name>yotta</name>
-      <printSymbol>Y</printSymbol>
-      <value value="1e24">1 &#215; 10<sup>24</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="Z" CODE="ZA">
-      <name>zetta</name>
-      <printSymbol>Z</printSymbol>
-      <value value="1e21">1 &#215; 10<sup>21</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="E" CODE="EX">
-      <name>exa</name>
-      <printSymbol>E</printSymbol>
-      <value value="1e18">1 &#215; 10<sup>18</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="P" CODE="PT">
-      <name>peta</name>
-      <printSymbol>P</printSymbol>
-      <value value="1e15">1 &#215; 10<sup>15</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="T" CODE="TR">
-      <name>tera</name>
-      <printSymbol>T</printSymbol>
-      <value value="1e12">1 &#215; 10<sup>12</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="G" CODE="GA">
-      <name>giga</name>
-      <printSymbol>G</printSymbol>
-      <value value="1e9">1 &#215; 10<sup>9</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="M" CODE="MA">
-      <name>mega</name>
-      <printSymbol>M</printSymbol>
-      <value value="1e6">1 &#215; 10<sup>6</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="k" CODE="K">
-      <name>kilo</name>
-      <printSymbol>k</printSymbol>
-      <value value="1e3">1 &#215; 10<sup>3</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="h" CODE="H">
-      <name>hecto</name>
-      <printSymbol>h</printSymbol>
-      <value value="1e2">1 &#215; 10<sup>2</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="da" CODE="DA">
-      <name>deka</name>
-      <printSymbol>da</printSymbol>
-      <value value="1e1">1 &#215; 10<sup>1</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="d" CODE="D">
-      <name>deci</name>
-      <printSymbol>d</printSymbol>
-      <value value="1e-1">1 &#215; 10<sup>-1</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="c" CODE="C">
-      <name>centi</name>
-      <printSymbol>c</printSymbol>
-      <value value="1e-2">1 &#215; 10<sup>-2</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="m" CODE="M">
-      <name>milli</name>
-      <printSymbol>m</printSymbol>
-      <value value="1e-3">1 &#215; 10<sup>-3</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="u" CODE="U">
-      <name>micro</name>
-      <printSymbol>&#956;</printSymbol>
-      <value value="1e-6">1 &#215; 10<sup>-6</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="n" CODE="N">
-      <name>nano</name>
-      <printSymbol>n</printSymbol>
-      <value value="1e-9">1 &#215; 10<sup>-9</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="p" CODE="P">
-      <name>pico</name>
-      <printSymbol>p</printSymbol>
-      <value value="1e-12">1 &#215; 10<sup>-12</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="f" CODE="F">
-      <name>femto</name>
-      <printSymbol>f</printSymbol>
-      <value value="1e-15">1 &#215; 10<sup>-15</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="a" CODE="A">
-      <name>atto</name>
-      <printSymbol>a</printSymbol>
-      <value value="1e-18">1 &#215; 10<sup>-18</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="z" CODE="ZO">
-      <name>zepto</name>
-      <printSymbol>z</printSymbol>
-      <value value="1e-21">1 &#215; 10<sup>-21</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="y" CODE="YO">
-      <name>yocto</name>
-      <printSymbol>y</printSymbol>
-      <value value="1e-24">1 &#215; 10<sup>-24</sup>
-      </value>
-   </prefix>
-   <base-unit xmlns="" Code="m" CODE="M" dim="L">
-      <name>meter</name>
-      <printSymbol>m</printSymbol>
-      <property>length</property>
-   </base-unit>
-   <base-unit xmlns="" Code="s" CODE="S" dim="T">
-      <name>second</name>
-      <printSymbol>s</printSymbol>
-      <property>time</property>
-   </base-unit>
-   <base-unit xmlns="" Code="g" CODE="G" dim="M">
-      <name>gram</name>
-      <printSymbol>g</printSymbol>
-      <property>mass</property>
-   </base-unit>
-   <base-unit xmlns="" Code="rad" CODE="RAD" dim="A">
-      <name>radian</name>
-      <printSymbol>rad</printSymbol>
-      <property>plane angle</property>
-   </base-unit>
-   <base-unit xmlns="" Code="K" CODE="K" dim="C">
-      <name>Kelvin</name>
-      <printSymbol>K</printSymbol>
-      <property>temperature</property>
-   </base-unit>
-   <base-unit xmlns="" Code="C" CODE="C" dim="Q">
-      <name>Coulomb</name>
-      <printSymbol>C</printSymbol>
-      <property>electric charge</property>
-   </base-unit>
-   <base-unit xmlns="" Code="cd" CODE="CD" dim="F">
-      <name>candela</name>
-      <printSymbol>cd</printSymbol>
-      <property>luminous intensity</property>
-   </base-unit>
-   <unit xmlns="" Code="10*" CODE="10*" isMetric="no" class="dimless">
-      <name>the number ten for arbitrary powers</name>
-      <printSymbol>10</printSymbol>
-      <property>number</property>
-      <value Unit="1" UNIT="1" value="10">10</value>
-   </unit>
-   <unit xmlns="" Code="10^" CODE="10^" isMetric="no" class="dimless">
-      <name>the number ten for arbitrary powers</name>
-      <printSymbol>10</printSymbol>
-      <property>number</property>
-      <value Unit="1" UNIT="1" value="10">10</value>
-   </unit>
-   <unit xmlns="" Code="[pi]" CODE="[PI]" isMetric="no" class="dimless">
-      <name>the number pi</name>
-      <printSymbol>&#960;</printSymbol>
-      <property>number</property>
-      <value Unit="1" UNIT="1"
-             value="3.1415926535897932384626433832795028841971693993751058209749445923">&#960;</value>
-   </unit>
-   <unit xmlns="" Code="%" CODE="%" isMetric="no" class="dimless">
-      <name>percent</name>
-      <printSymbol>%</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-2" UNIT="10*-2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ppth]" CODE="[PPTH]" isMetric="no" class="dimless">
-      <name>parts per thousand</name>
-      <printSymbol>ppth</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-3" UNIT="10*-3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ppm]" CODE="[PPM]" isMetric="no" class="dimless">
-      <name>parts per million</name>
-      <printSymbol>ppm</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-6" UNIT="10*-6" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ppb]" CODE="[PPB]" isMetric="no" class="dimless">
-      <name>parts per billion</name>
-      <printSymbol>ppb</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-9" UNIT="10*-9" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pptr]" CODE="[PPTR]" isMetric="no" class="dimless">
-      <name>parts per trillion</name>
-      <printSymbol>pptr</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-12" UNIT="10*-12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="mol" CODE="MOL" isMetric="yes" class="si">
-      <name>mole</name>
-      <printSymbol>mol</printSymbol>
-      <property>amount of substance</property>
-      <value Unit="10*23" UNIT="10*23" value="6.0221367">6.0221367</value>
-   </unit>
-   <unit xmlns="" Code="sr" CODE="SR" isMetric="yes" class="si">
-      <name>steradian</name>
-      <printSymbol>sr</printSymbol>
-      <property>solid angle</property>
-      <value Unit="rad2" UNIT="RAD2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Hz" CODE="HZ" isMetric="yes" class="si">
-      <name>Hertz</name>
-      <printSymbol>Hz</printSymbol>
-      <property>frequency</property>
-      <value Unit="s-1" UNIT="S-1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="N" CODE="N" isMetric="yes" class="si">
-      <name>Newton</name>
-      <printSymbol>N</printSymbol>
-      <property>force</property>
-      <value Unit="kg.m/s2" UNIT="KG.M/S2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Pa" CODE="PAL" isMetric="yes" class="si">
-      <name>Pascal</name>
-      <printSymbol>Pa</printSymbol>
-      <property>pressure</property>
-      <value Unit="N/m2" UNIT="N/M2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="J" CODE="J" isMetric="yes" class="si">
-      <name>Joule</name>
-      <printSymbol>J</printSymbol>
-      <property>energy</property>
-      <value Unit="N.m" UNIT="N.M" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="W" CODE="W" isMetric="yes" class="si">
-      <name>Watt</name>
-      <printSymbol>W</printSymbol>
-      <property>power</property>
-      <value Unit="J/s" UNIT="J/S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="A" CODE="A" isMetric="yes" class="si">
-      <name>Amp&#232;re</name>
-      <printSymbol>A</printSymbol>
-      <property>electric current</property>
-      <value Unit="C/s" UNIT="C/S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="V" CODE="V" isMetric="yes" class="si">
-      <name>Volt</name>
-      <printSymbol>V</printSymbol>
-      <property>electric potential</property>
-      <value Unit="J/C" UNIT="J/C" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="F" CODE="F" isMetric="yes" class="si">
-      <name>Farad</name>
-      <printSymbol>F</printSymbol>
-      <property>electric capacitance</property>
-      <value Unit="C/V" UNIT="C/V" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Ohm" CODE="OHM" isMetric="yes" class="si">
-      <name>Ohm</name>
-      <printSymbol>&#937;</printSymbol>
-      <property>electric resistance</property>
-      <value Unit="V/A" UNIT="V/A" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="S" CODE="SIE" isMetric="yes" class="si">
-      <name>Siemens</name>
-      <printSymbol>S</printSymbol>
-      <property>electric conductance</property>
-      <value Unit="Ohm-1" UNIT="OHM-1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Wb" CODE="WB" isMetric="yes" class="si">
-      <name>Weber</name>
-      <printSymbol>Wb</printSymbol>
-      <property>magentic flux</property>
-      <value Unit="V.s" UNIT="V.S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Cel" CODE="CEL" isMetric="yes" isSpecial="yes" class="si">
-      <name>degree Celsius</name>
-      <printSymbol>&#176;C</printSymbol>
-      <property>temperature</property>
-      <value Unit="cel(1 K)" UNIT="CEL(1 K)">
-         <function name="Cel" value="1" Unit="K"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="T" CODE="T" isMetric="yes" class="si">
-      <name>Tesla</name>
-      <printSymbol>T</printSymbol>
-      <property>magnetic flux density</property>
-      <value Unit="Wb/m2" UNIT="WB/M2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="H" CODE="H" isMetric="yes" class="si">
-      <name>Henry</name>
-      <printSymbol>H</printSymbol>
-      <property>inductance</property>
-      <value Unit="Wb/A" UNIT="WB/A" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="lm" CODE="LM" isMetric="yes" class="si">
-      <name>lumen</name>
-      <printSymbol>lm</printSymbol>
-      <property>luminous flux</property>
-      <value Unit="cd.sr" UNIT="CD.SR" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="lx" CODE="LX" isMetric="yes" class="si">
-      <name>lux</name>
-      <printSymbol>lx</printSymbol>
-      <property>illuminance</property>
-      <value Unit="lm/m2" UNIT="LM/M2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Bq" CODE="BQ" isMetric="yes" class="si">
-      <name>Becquerel</name>
-      <printSymbol>Bq</printSymbol>
-      <property>radioactivity</property>
-      <value Unit="s-1" UNIT="S-1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Gy" CODE="GY" isMetric="yes" class="si">
-      <name>Gray</name>
-      <printSymbol>Gy</printSymbol>
-      <property>energy dose</property>
-      <value Unit="J/kg" UNIT="J/KG" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Sv" CODE="SV" isMetric="yes" class="si">
-      <name>Sievert</name>
-      <printSymbol>Sv</printSymbol>
-      <property>dose equivalent</property>
-      <value Unit="J/kg" UNIT="J/KG" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="gon" CODE="GON" isMetric="no" class="iso1000">
-      <name>gon</name>
-      <name>grade</name>
-      <printSymbol>&#9633;<sup>g</sup>
-      </printSymbol>
-      <property>plane angle</property>
-      <value Unit="deg" UNIT="DEG" value="0.9">0.9</value>
-   </unit>
-   <unit xmlns="" Code="deg" CODE="DEG" isMetric="no" class="iso1000">
-      <name>degree</name>
-      <printSymbol>&#176;</printSymbol>
-      <property>plane angle</property>
-      <value Unit="[pi].rad/360" UNIT="[PI].RAD/360" value="2">2</value>
-   </unit>
-   <unit xmlns="" Code="'" CODE="'" isMetric="no" class="iso1000">
-      <name>minute</name>
-      <printSymbol>'</printSymbol>
-      <property>plane angle</property>
-      <value Unit="deg/60" UNIT="DEG/60" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="''" CODE="''" isMetric="no" class="iso1000">
-      <name>second</name>
-      <printSymbol>''</printSymbol>
-      <property>plane angle</property>
-      <value Unit="'/60" UNIT="'/60" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="l" CODE="L" isMetric="yes" class="iso1000">
-      <name>liter</name>
-      <printSymbol>l</printSymbol>
-      <property>volume</property>
-      <value Unit="dm3" UNIT="DM3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="L" isMetric="yes" class="iso1000">
-      <name>liter</name>
-      <printSymbol>L</printSymbol>
-      <property>volume</property>
-      <value Unit="l" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="ar" CODE="AR" isMetric="yes" class="iso1000">
-      <name>are</name>
-      <printSymbol>a</printSymbol>
-      <property>area</property>
-      <value Unit="m2" UNIT="M2" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="min" CODE="MIN" isMetric="no" class="iso1000">
-      <name>minute</name>
-      <printSymbol>min</printSymbol>
-      <property>time</property>
-      <value Unit="s" UNIT="S" value="60">60</value>
-   </unit>
-   <unit xmlns="" Code="h" CODE="HR" isMetric="no" class="iso1000">
-      <name>hour</name>
-      <printSymbol>h</printSymbol>
-      <property>time</property>
-      <value Unit="min" UNIT="MIN" value="60">60</value>
-   </unit>
-   <unit xmlns="" Code="d" CODE="D" isMetric="no" class="iso1000">
-      <name>day</name>
-      <printSymbol>d</printSymbol>
-      <property>time</property>
-      <value Unit="h" UNIT="HR" value="24">24</value>
-   </unit>
-   <unit xmlns="" Code="a_t" CODE="ANN_T" isMetric="no" class="iso1000">
-      <name>tropical year</name>
-      <printSymbol>a<sub>t</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="365.24219">365.24219</value>
-   </unit>
-   <unit xmlns="" Code="a_j" CODE="ANN_J" isMetric="no" class="iso1000">
-      <name>mean Julian year</name>
-      <printSymbol>a<sub>j</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="365.25">365.25</value>
-   </unit>
-   <unit xmlns="" Code="a_g" CODE="ANN_G" isMetric="no" class="iso1000">
-      <name>mean Gregorian year</name>
-      <printSymbol>a<sub>g</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="365.2425">365.2425</value>
-   </unit>
-   <unit xmlns="" Code="a" CODE="ANN" isMetric="no" class="iso1000">
-      <name>year</name>
-      <printSymbol>a</printSymbol>
-      <property>time</property>
-      <value Unit="a_j" UNIT="ANN_J" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="wk" CODE="WK" isMetric="no" class="iso1000">
-      <name>week</name>
-      <printSymbol>wk</printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="7">7</value>
-   </unit>
-   <unit xmlns="" Code="mo_s" CODE="MO_S" isMetric="no" class="iso1000">
-      <name>synodal month</name>
-      <printSymbol>mo<sub>s</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="29.53059">29.53059</value>
-   </unit>
-   <unit xmlns="" Code="mo_j" CODE="MO_J" isMetric="no" class="iso1000">
-      <name>mean Julian month</name>
-      <printSymbol>mo<sub>j</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="a_j/12" UNIT="ANN_J/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="mo_g" CODE="MO_G" isMetric="no" class="iso1000">
-      <name>mean Gregorian month</name>
-      <printSymbol>mo<sub>g</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="a_g/12" UNIT="ANN_G/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="mo" CODE="MO" isMetric="no" class="iso1000">
-      <name>month</name>
-      <printSymbol>mo</printSymbol>
-      <property>time</property>
-      <value Unit="mo_j" UNIT="MO_J" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="t" CODE="TNE" isMetric="yes" class="iso1000">
-      <name>tonne</name>
-      <printSymbol>t</printSymbol>
-      <property>mass</property>
-      <value Unit="kg" UNIT="KG" value="1e3">1 &#215; 10<sup>3</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="bar" CODE="BAR" isMetric="yes" class="iso1000">
-      <name>bar</name>
-      <printSymbol>bar</printSymbol>
-      <property>pressure</property>
-      <value Unit="Pa" UNIT="PAL" value="1e5">1 &#215; 10<sup>5</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="u" CODE="AMU" isMetric="yes" class="iso1000">
-      <name>unified atomic mass unit</name>
-      <printSymbol>u</printSymbol>
-      <property>mass</property>
-      <value Unit="g" UNIT="G" value="1.6605402e-24">1.6605402 &#215; 10<sup>-24</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="eV" CODE="EV" isMetric="yes" class="iso1000">
-      <name>electronvolt</name>
-      <printSymbol>eV</printSymbol>
-      <property>energy</property>
-      <value Unit="[e].V" UNIT="[E].V" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="AU" CODE="ASU" isMetric="no" class="iso1000">
-      <name>astronomic unit</name>
-      <printSymbol>AU</printSymbol>
-      <property>length</property>
-      <value Unit="Mm" UNIT="MAM" value="149597.870691">149597.870691</value>
-   </unit>
-   <unit xmlns="" Code="pc" CODE="PRS" isMetric="yes" class="iso1000">
-      <name>parsec</name>
-      <printSymbol>pc</printSymbol>
-      <property>length</property>
-      <value Unit="m" UNIT="M" value="3.085678e16">3.085678 &#215; 10<sup>16</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[c]" CODE="[C]" isMetric="yes" class="const">
-      <name>velocity of light</name>
-      <printSymbol>
-         <i>c</i>
-      </printSymbol>
-      <property>velocity</property>
-      <value Unit="m/s" UNIT="M/S" value="299792458">299792458</value>
-   </unit>
-   <unit xmlns="" Code="[h]" CODE="[H]" isMetric="yes" class="const">
-      <name>Planck constant</name>
-      <printSymbol>
-         <i>h</i>
-      </printSymbol>
-      <property>action</property>
-      <value Unit="J.s" UNIT="J.S" value="6.6260755e-24">6.6260755 &#215; 10<sup>-24</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[k]" CODE="[K]" isMetric="yes" class="const">
-      <name>Boltzmann constant</name>
-      <printSymbol>
-         <i>k</i>
-      </printSymbol>
-      <property>(unclassified)</property>
-      <value Unit="J/K" UNIT="J/K" value="1.380658e-23">1.380658 &#215; 10<sup>-23</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[eps_0]" CODE="[EPS_0]" isMetric="yes" class="const">
-      <name>permittivity of vacuum</name>
-      <printSymbol>
-         <i>&#949;<sub>
-               <r>0</r>
-            </sub>
-         </i>
-      </printSymbol>
-      <property>electric permittivity</property>
-      <value Unit="F/m" UNIT="F/M" value="8.854187817e-12">8.854187817 &#215; 10<sup>-12</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[mu_0]" CODE="[MU_0]" isMetric="yes" class="const">
-      <name>permeability of vacuum</name>
-      <printSymbol>
-         <i>&#956;<sub>
-               <r>0</r>
-            </sub>
-         </i>
-      </printSymbol>
-      <property>magnetic permeability</property>
-      <value Unit="4.[pi].10*-7.N/A2" UNIT="4.[PI].10*-7.N/A2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[e]" CODE="[E]" isMetric="yes" class="const">
-      <name>elementary charge</name>
-      <printSymbol>
-         <i>e</i>
-      </printSymbol>
-      <property>electric charge</property>
-      <value Unit="C" UNIT="C" value="1.60217733e-19">1.60217733 &#215; 10<sup>-19</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[m_e]" CODE="[M_E]" isMetric="yes" class="const">
-      <name>electron mass</name>
-      <printSymbol>
-         <i>m<sub>
-               <r>e</r>
-            </sub>
-         </i>
-      </printSymbol>
-      <property>mass</property>
-      <value Unit="g" UNIT="g" value="9.1093897e-28">9.1093897 &#215; 10<sup>-28</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[m_p]" CODE="[M_P]" isMetric="yes" class="const">
-      <name>proton mass</name>
-      <printSymbol>
-         <i>m<sub>
-               <r>p</r>
-            </sub>
-         </i>
-      </printSymbol>
-      <property>mass</property>
-      <value Unit="g" UNIT="g" value="1.6726231e-24">1.6726231 &#215; 10<sup>-24</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[G]" CODE="[GC]" isMetric="yes" class="const">
-      <name>Newtonian constant of gravitation</name>
-      <printSymbol>
-         <i>G</i>
-      </printSymbol>
-      <property>(unclassified)</property>
-      <value Unit="m3.kg-1.s-2" UNIT="M3.KG-1.S-2" value="6.67259e-11">6.67259 &#215; 10<sup>-11</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[g]" CODE="[G]" isMetric="yes" class="const">
-      <name>standard acceleration of free fall</name>
-      <printSymbol>
-         <i>g<sub>n</sub>
-         </i>
-      </printSymbol>
-      <property>acceleration</property>
-      <value Unit="m/s2" UNIT="M/S2" value="980665e-5">9.80665</value>
-   </unit>
-   <unit xmlns="" Code="atm" CODE="ATM" isMetric="no" class="const">
-      <name>standard atmosphere</name>
-      <printSymbol>atm</printSymbol>
-      <property>pressure</property>
-      <value Unit="Pa" UNIT="PAL" value="101325">101325</value>
-   </unit>
-   <unit xmlns="" Code="[ly]" CODE="[LY]" isMetric="yes" class="const">
-      <name>light-year</name>
-      <printSymbol>l.y.</printSymbol>
-      <property>length</property>
-      <value Unit="[c].a_j" UNIT="[C].ANN_J" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="gf" CODE="GF" isMetric="yes" class="const">
-      <name>gram-force</name>
-      <printSymbol>gf</printSymbol>
-      <property>force</property>
-      <value Unit="g.[g]" UNIT="G.[G]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[lbf_av]" CODE="[LBF_AV]" isMetric="no" class="const">
-      <name>pound force</name>
-      <printSymbol>lbf</printSymbol>
-      <property>force</property>
-      <value Unit="[lb_av].[g]" UNIT="[LB_AV].[G]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Ky" CODE="KY" isMetric="yes" class="cgs">
-      <name>Kayser</name>
-      <printSymbol>K</printSymbol>
-      <property>lineic number</property>
-      <value Unit="cm-1" UNIT="CM-1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Gal" CODE="GL" isMetric="yes" class="cgs">
-      <name>Gal</name>
-      <printSymbol>Gal</printSymbol>
-      <property>acceleration</property>
-      <value Unit="cm/s2" UNIT="CM/S2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="dyn" CODE="DYN" isMetric="yes" class="cgs">
-      <name>dyne</name>
-      <printSymbol>dyn</printSymbol>
-      <property>force</property>
-      <value Unit="g.cm/s2" UNIT="G.CM/S2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="erg" CODE="ERG" isMetric="yes" class="cgs">
-      <name>erg</name>
-      <printSymbol>erg</printSymbol>
-      <property>energy</property>
-      <value Unit="dyn.cm" UNIT="DYN.CM" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="P" CODE="P" isMetric="yes" class="cgs">
-      <name>Poise</name>
-      <printSymbol>P</printSymbol>
-      <property>dynamic viscosity</property>
-      <value Unit="dyn.s/cm2" UNIT="DYN.S/CM2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Bi" CODE="BI" isMetric="yes" class="cgs">
-      <name>Biot</name>
-      <printSymbol>Bi</printSymbol>
-      <property>electric current</property>
-      <value Unit="A" UNIT="A" value="10">10</value>
-   </unit>
-   <unit xmlns="" Code="St" CODE="ST" isMetric="yes" class="cgs">
-      <name>Stokes</name>
-      <printSymbol>St</printSymbol>
-      <property>kinematic viscosity</property>
-      <value Unit="cm2/s" UNIT="CM2/S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Mx" CODE="MX" isMetric="yes" class="cgs">
-      <name>Maxwell</name>
-      <printSymbol>Mx</printSymbol>
-      <property>flux of magnetic induction</property>
-      <value Unit="Wb" UNIT="WB" value="1e-8">1 &#215; 10<sup>-8</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="G" CODE="GS" isMetric="yes" class="cgs">
-      <name>Gauss</name>
-      <printSymbol>Gs</printSymbol>
-      <property>magnetic flux density</property>
-      <value Unit="T" UNIT="T" value="1e-4">1 &#215; 10<sup>-4</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="Oe" CODE="OE" isMetric="yes" class="cgs">
-      <name>Oersted</name>
-      <printSymbol>Oe</printSymbol>
-      <property>magnetic field intensity</property>
-      <value Unit="/[pi].A/m" UNIT="/[PI].A/M" value="250">250</value>
-   </unit>
-   <unit xmlns="" Code="Gb" CODE="GB" isMetric="yes" class="cgs">
-      <name>Gilbert</name>
-      <printSymbol>Gb</printSymbol>
-      <property>magnetic tension</property>
-      <value Unit="Oe.cm" UNIT="OE.CM" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="sb" CODE="SB" isMetric="yes" class="cgs">
-      <name>stilb</name>
-      <printSymbol>sb</printSymbol>
-      <property>lum. intensity density</property>
-      <value Unit="cd/cm2" UNIT="CD/CM2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Lmb" CODE="LMB" isMetric="yes" class="cgs">
-      <name>Lambert</name>
-      <printSymbol>L</printSymbol>
-      <property>brightness</property>
-      <value Unit="cd/cm2/[pi]" UNIT="CD/CM2/[PI]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="ph" CODE="PHT" isMetric="yes" class="cgs">
-      <name>phot</name>
-      <printSymbol>ph</printSymbol>
-      <property>illuminance</property>
-      <value Unit="lx" UNIT="LX" value="1e-4">1 &#215; 10<sup>-4</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="Ci" CODE="CI" isMetric="yes" class="cgs">
-      <name>Curie</name>
-      <printSymbol>Ci</printSymbol>
-      <property>radioactivity</property>
-      <value Unit="Bq" UNIT="BQ" value="37e9">3.7 &#215; 10<sup>10</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="R" CODE="ROE" isMetric="yes" class="cgs">
-      <name>Roentgen</name>
-      <printSymbol>R</printSymbol>
-      <property>ion dose</property>
-      <value Unit="C/kg" UNIT="C/KG" value="2.58e-4">2.58 &#215; 10<sup>-4</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="RAD" CODE="[RAD]" isMetric="yes" class="cgs">
-      <name>radiation absorbed dose</name>
-      <printSymbol>RAD</printSymbol>
-      <property>energy dose</property>
-      <value Unit="erg/g" UNIT="ERG/G" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="REM" CODE="[REM]" isMetric="yes" class="cgs">
-      <name>radiation equivalent man</name>
-      <printSymbol>REM</printSymbol>
-      <property>dose equivalent</property>
-      <value Unit="RAD" UNIT="[RAD]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[in_i]" CODE="[IN_I]" isMetric="no" class="intcust">
-      <name>inch</name>
-      <printSymbol>in</printSymbol>
-      <property>length</property>
-      <value Unit="cm" UNIT="CM" value="254e-2">2.54</value>
-   </unit>
-   <unit xmlns="" Code="[ft_i]" CODE="[FT_I]" isMetric="no" class="intcust">
-      <name>foot</name>
-      <printSymbol>ft</printSymbol>
-      <property>length</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[yd_i]" CODE="[YD_I]" isMetric="no" class="intcust">
-      <name>yard</name>
-      <printSymbol>yd</printSymbol>
-      <property>length</property>
-      <value Unit="[ft_i]" UNIT="[FT_I]" value="3">3</value>
-   </unit>
-   <unit xmlns="" Code="[mi_i]" CODE="[MI_I]" isMetric="no" class="intcust">
-      <name>statute mile</name>
-      <printSymbol>mi</printSymbol>
-      <property>length</property>
-      <value Unit="[ft_i]" UNIT="[FT_I]" value="5280">5280</value>
-   </unit>
-   <unit xmlns="" Code="[fth_i]" CODE="[FTH_I]" isMetric="no" class="intcust">
-      <name>fathom</name>
-      <printSymbol>fth</printSymbol>
-      <property>depth of water</property>
-      <value Unit="[ft_i]" UNIT="[FT_I]" value="6">6</value>
-   </unit>
-   <unit xmlns="" Code="[nmi_i]" CODE="[NMI_I]" isMetric="no" class="intcust">
-      <name>nautical mile</name>
-      <printSymbol>n.mi</printSymbol>
-      <property>length</property>
-      <value Unit="m" UNIT="M" value="1852">1852</value>
-   </unit>
-   <unit xmlns="" Code="[kn_i]" CODE="[KN_I]" isMetric="no" class="intcust">
-      <name>knot</name>
-      <printSymbol>knot</printSymbol>
-      <property>velocity</property>
-      <value Unit="[nmi_i]/h" UNIT="[NMI_I]/H" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[sin_i]" CODE="[SIN_I]" isMetric="no" class="intcust">
-      <name>square inch</name>
-      <property>area</property>
-      <value Unit="[in_i]2" UNIT="[IN_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[sft_i]" CODE="[SFT_I]" isMetric="no" class="intcust">
-      <name>square foot</name>
-      <property>area</property>
-      <value Unit="[ft_i]2" UNIT="[FT_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[syd_i]" CODE="[SYD_I]" isMetric="no" class="intcust">
-      <name>square yard</name>
-      <property>area</property>
-      <value Unit="[yd_i]2" UNIT="[YD_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cin_i]" CODE="[CIN_I]" isMetric="no" class="intcust">
-      <name>cubic inch</name>
-      <property>volume</property>
-      <value Unit="[in_i]3" UNIT="[IN_I]3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cft_i]" CODE="[CFT_I]" isMetric="no" class="intcust">
-      <name>cubic foot</name>
-      <property>volume</property>
-      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cyd_i]" CODE="[CYD_I]" isMetric="no" class="intcust">
-      <name>cubic yard</name>
-      <printSymbol>cu.yd</printSymbol>
-      <property>volume</property>
-      <value Unit="[yd_i]3" UNIT="[YD_I]3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[bf_i]" CODE="[BF_I]" isMetric="no" class="intcust">
-      <name>board foot</name>
-      <property>volume</property>
-      <value Unit="[in_i]3" UNIT="[IN_I]3" value="144">144</value>
-   </unit>
-   <unit xmlns="" Code="[cr_i]" CODE="[CR_I]" isMetric="no" class="intcust">
-      <name>cord</name>
-      <property>volume</property>
-      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="128">128</value>
-   </unit>
-   <unit xmlns="" Code="[mil_i]" CODE="[MIL_I]" isMetric="no" class="intcust">
-      <name>mil</name>
-      <printSymbol>mil</printSymbol>
-      <property>length</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="1e-3">1 &#215; 10<sup>-3</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[cml_i]" CODE="[CML_I]" isMetric="no" class="intcust">
-      <name>circular mil</name>
-      <printSymbol>circ.mil</printSymbol>
-      <property>area</property>
-      <value Unit="[pi]/4.[mil_i]2" UNIT="[PI]/4.[MIL_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hd_i]" CODE="[HD_I]" isMetric="no" class="intcust">
-      <name>hand</name>
-      <printSymbol>hd</printSymbol>
-      <property>height of horses</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[ft_us]" CODE="[FT_US]" isMetric="no" class="us-lengths">
-      <name>foot</name>
-      <printSymbol>ft<sub>us</sub>
-      </printSymbol>
-      <property>length</property>
-      <value Unit="m/3937" UNIT="M/3937" value="1200">1200</value>
-   </unit>
-   <unit xmlns="" Code="[yd_us]" CODE="[YD_US]" isMetric="no" class="us-lengths">
-      <name>yard</name>
-      <property>length</property>
-      <value Unit="[ft_us]" UNIT="[FT_US]" value="3">3</value>
-   </unit>
-   <unit xmlns="" Code="[in_us]" CODE="[IN_US]" isMetric="no" class="us-lengths">
-      <name>inch</name>
-      <property>length</property>
-      <value Unit="[ft_us]/12" UNIT="[FT_US]/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[rd_us]" CODE="[RD_US]" isMetric="no" class="us-lengths">
-      <name>rod</name>
-      <property>length</property>
-      <value Unit="[ft_us]" UNIT="[FT_US]" value="16.5">16.5</value>
-   </unit>
-   <unit xmlns="" Code="[ch_us]" CODE="[CH_US]" isMetric="no" class="us-lengths">
-      <name>Gunter's chain</name>
-      <name>Surveyor's chain</name>
-      <property>length</property>
-      <value Unit="[rd_us]" UNIT="[RD_US]" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[lk_us]" CODE="[LK_US]" isMetric="no" class="us-lengths">
-      <name>link for Gunter's chain</name>
-      <property>length</property>
-      <value Unit="[ch_us]/100" UNIT="[CH_US]/100" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[rch_us]" CODE="[RCH_US]" isMetric="no" class="us-lengths">
-      <name>Ramden's chain</name>
-      <name>Engineer's chain</name>
-      <property>length</property>
-      <value Unit="[ft_us]" UNIT="[FT_US]" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="[rlk_us]" CODE="[RLK_US]" isMetric="no" class="us-lengths">
-      <name>link for Ramden's chain</name>
-      <property>length</property>
-      <value Unit="[rch_us]/100" UNIT="[RCH_US]/100" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[fth_us]" CODE="[FTH_US]" isMetric="no" class="us-lengths">
-      <name>fathom</name>
-      <property>length</property>
-      <value Unit="[ft_us]" UNIT="[FT_US]" value="6">6</value>
-   </unit>
-   <unit xmlns="" Code="[fur_us]" CODE="[FUR_US]" isMetric="no" class="us-lengths">
-      <name>furlong</name>
-      <property>length</property>
-      <value Unit="[rd_us]" UNIT="[RD_US]" value="40">40</value>
-   </unit>
-   <unit xmlns="" Code="[mi_us]" CODE="[MI_US]" isMetric="no" class="us-lengths">
-      <name>mile</name>
-      <property>length</property>
-      <value Unit="[fur_us]" UNIT="[FUR_US]" value="8">8</value>
-   </unit>
-   <unit xmlns="" Code="[acr_us]" CODE="[ACR_US]" isMetric="no" class="us-lengths">
-      <name>acre</name>
-      <property>area</property>
-      <value Unit="[rd_us]2" UNIT="[RD_US]2" value="160">160</value>
-   </unit>
-   <unit xmlns="" Code="[srd_us]" CODE="[SRD_US]" isMetric="no" class="us-lengths">
-      <name>square rod</name>
-      <property>area</property>
-      <value Unit="[rd_us]2" UNIT="[RD_US]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[smi_us]" CODE="[SMI_US]" isMetric="no" class="us-lengths">
-      <name>square mile</name>
-      <property>area</property>
-      <value Unit="[mi_us]2" UNIT="[MI_US]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[sct]" CODE="[SCT]" isMetric="no" class="us-lengths">
-      <name>section</name>
-      <property>area</property>
-      <value Unit="[mi_us]2" UNIT="[MI_US]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[twp]" CODE="[TWP]" isMetric="no" class="us-lengths">
-      <name>township</name>
-      <property>area</property>
-      <value Unit="[sct]" UNIT="[SCT]" value="36">36</value>
-   </unit>
-   <unit xmlns="" Code="[mil_us]" CODE="[MIL_US]" isMetric="no" class="us-lengths">
-      <name>mil</name>
-      <property>length</property>
-      <value Unit="[in_us]" UNIT="[IN_US]" value="1e-3">1 &#215; 10<sup>-3</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[in_br]" CODE="[IN_BR]" isMetric="no" class="brit-length">
-      <name>inch</name>
-      <property>length</property>
-      <value Unit="cm" UNIT="CM" value="2.539998">2.539998</value>
-   </unit>
-   <unit xmlns="" Code="[ft_br]" CODE="[FT_BR]" isMetric="no" class="brit-length">
-      <name>foot</name>
-      <property>length</property>
-      <value Unit="[in_br]" UNIT="[IN_BR]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[rd_br]" CODE="[RD_BR]" isMetric="no" class="brit-length">
-      <name>rod</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="16.5">16.5</value>
-   </unit>
-   <unit xmlns="" Code="[ch_br]" CODE="[CH_BR]" isMetric="no" class="brit-length">
-      <name>Gunter's chain</name>
-      <property>length</property>
-      <value Unit="[rd_br]" UNIT="[RD_BR]" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[lk_br]" CODE="[LK_BR]" isMetric="no" class="brit-length">
-      <name>link for Gunter's chain</name>
-      <property>length</property>
-      <value Unit="[ch_br]/100" UNIT="[CH_BR]/100" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[fth_br]" CODE="[FTH_BR]" isMetric="no" class="brit-length">
-      <name>fathom</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="6">6</value>
-   </unit>
-   <unit xmlns="" Code="[pc_br]" CODE="[PC_BR]" isMetric="no" class="brit-length">
-      <name>pace</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="2.5">2.5</value>
-   </unit>
-   <unit xmlns="" Code="[yd_br]" CODE="[YD_BR]" isMetric="no" class="brit-length">
-      <name>yard</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="3">3</value>
-   </unit>
-   <unit xmlns="" Code="[mi_br]" CODE="[MI_BR]" isMetric="no" class="brit-length">
-      <name>mile</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="5280">5280</value>
-   </unit>
-   <unit xmlns="" Code="[nmi_br]" CODE="[NMI_BR]" isMetric="no" class="brit-length">
-      <name>nautical mile</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="6080">6080</value>
-   </unit>
-   <unit xmlns="" Code="[kn_br]" CODE="[KN_BR]" isMetric="no" class="brit-length">
-      <name>knot</name>
-      <property>velocity</property>
-      <value Unit="[nmi_br]/h" UNIT="[NMI_BR]/H" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[acr_br]" CODE="[ACR_BR]" isMetric="no" class="brit-length">
-      <name>acre</name>
-      <property>area</property>
-      <value Unit="[yd_br]2" UNIT="[YD_BR]2" value="4840">4840</value>
-   </unit>
-   <unit xmlns="" Code="[gal_us]" CODE="[GAL_US]" isMetric="no" class="us-volumes">
-      <name>Queen&#160;Anne's wine gallon</name>
-      <property>fluid volume</property>
-      <value Unit="[in_i]3" UNIT="[IN_I]3" value="231">231</value>
-   </unit>
-   <unit xmlns="" Code="[bbl_us]" CODE="[BBL_US]" isMetric="no" class="us-volumes">
-      <name>barrel</name>
-      <property>fluid volume</property>
-      <value Unit="[gal_us]" UNIT="[GAL_US]" value="42">42</value>
-   </unit>
-   <unit xmlns="" Code="[qt_us]" CODE="[QT_US]" isMetric="no" class="us-volumes">
-      <name>quart</name>
-      <property>fluid volume</property>
-      <value Unit="[gal_us]/4" UNIT="[GAL_US]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pt_us]" CODE="[PT_US]" isMetric="no" class="us-volumes">
-      <name>pint</name>
-      <property>fluid volume</property>
-      <value Unit="[qt_us]/2" UNIT="[QT_US]/2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[gil_us]" CODE="[GIL_US]" isMetric="no" class="us-volumes">
-      <name>gill</name>
-      <property>fluid volume</property>
-      <value Unit="[pt_us]/4" UNIT="[PT_US]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[foz_us]" CODE="[FOZ_US]" isMetric="no" class="us-volumes">
-      <name>fluid ounce</name>
-      <printSymbol>oz fl</printSymbol>
-      <property>fluid volume</property>
-      <value Unit="[gil_us]/4" UNIT="[GIL_US]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[fdr_us]" CODE="[FDR_US]" isMetric="no" class="us-volumes">
-      <name>fluid dram</name>
-      <property>fluid volume</property>
-      <value Unit="[foz_us]/8" UNIT="[FOZ_US]/8" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[min_us]" CODE="[MIN_US]" isMetric="no" class="us-volumes">
-      <name>minim</name>
-      <property>fluid volume</property>
-      <value Unit="[fdr_us]/60" UNIT="[FDR_US]/60" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[crd_us]" CODE="[CRD_US]" isMetric="no" class="us-volumes">
-      <name>cord</name>
-      <property>fluid volume</property>
-      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="128">128</value>
-   </unit>
-   <unit xmlns="" Code="[bu_us]" CODE="[BU_US]" isMetric="no" class="us-volumes">
-      <name>bushel</name>
-      <property>dry volume</property>
-      <value Unit="[in_i]3" UNIT="[IN_I]3" value="2150.42">2150.42</value>
-   </unit>
-   <unit xmlns="" Code="[gal_wi]" CODE="[GAL_WI]" isMetric="no" class="us-volumes">
-      <name>historical winchester gallon</name>
-      <property>dry volume</property>
-      <value Unit="[bu_us]/8" UNIT="[BU_US]/8" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pk_us]" CODE="[PK_US]" isMetric="no" class="us-volumes">
-      <name>peck</name>
-      <property>dry volume</property>
-      <value Unit="[bu_us]/4" UNIT="[BU_US]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[dqt_us]" CODE="[DQT_US]" isMetric="no" class="us-volumes">
-      <name>dry quart</name>
-      <property>dry volume</property>
-      <value Unit="[pk_us]/8" UNIT="[PK_US]/8" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[dpt_us]" CODE="[DPT_US]" isMetric="no" class="us-volumes">
-      <name>dry pint</name>
-      <property>dry volume</property>
-      <value Unit="[dqt_us]/2" UNIT="[DQT_US]/2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[tbs_us]" CODE="[TBS_US]" isMetric="no" class="us-volumes">
-      <name>tablespoon</name>
-      <property>volume</property>
-      <value Unit="[foz_us]/2" UNIT="[FOZ_US]/2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[tsp_us]" CODE="[TSP_US]" isMetric="no" class="us-volumes">
-      <name>teaspoon</name>
-      <property>volume</property>
-      <value Unit="[tbs_us]/3" UNIT="[TBS_US]/3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cup_us]" CODE="[CUP_US]" isMetric="no" class="us-volumes">
-      <name>cup</name>
-      <property>volume</property>
-      <value Unit="[tbs_us]" UNIT="[TBS_US]" value="16">16</value>
-   </unit>
-   <unit xmlns="" Code="[foz_m]" CODE="[FOZ_M]" isMetric="no" class="us-volumes">
-      <name>metric fluid ounce</name>
-      <printSymbol>oz fl</printSymbol>
-      <property>fluid volume</property>
-      <value Unit="mL" UNIT="ML" value="30">30</value>
-   </unit>
-   <unit xmlns="" Code="[cup_m]" CODE="[CUP_M]" isMetric="no" class="us-volumes">
-      <name>metric cup</name>
-      <property>volume</property>
-      <value Unit="mL" UNIT="ML" value="240">240</value>
-   </unit>
-   <unit xmlns="" Code="[tsp_m]" CODE="[TSP_M]" isMetric="no" class="us-volumes">
-      <name>metric teaspoon</name>
-      <property>volume</property>
-      <value Unit="mL" UNIT="mL" value="5">5</value>
-   </unit>
-   <unit xmlns="" Code="[tbs_m]" CODE="[TBS_M]" isMetric="no" class="us-volumes">
-      <name>metric tablespoon</name>
-      <property>volume</property>
-      <value Unit="mL" UNIT="mL" value="15">15</value>
-   </unit>
-   <unit xmlns="" Code="[gal_br]" CODE="[GAL_BR]" isMetric="no" class="brit-volumes">
-      <name>gallon</name>
-      <property>volume</property>
-      <value Unit="l" UNIT="L" value="4.54609">4.54609</value>
-   </unit>
-   <unit xmlns="" Code="[pk_br]" CODE="[PK_BR]" isMetric="no" class="brit-volumes">
-      <name>peck</name>
-      <property>volume</property>
-      <value Unit="[gal_br]" UNIT="[GAL_BR]" value="2">2</value>
-   </unit>
-   <unit xmlns="" Code="[bu_br]" CODE="[BU_BR]" isMetric="no" class="brit-volumes">
-      <name>bushel</name>
-      <property>volume</property>
-      <value Unit="[pk_br]" UNIT="[PK_BR]" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[qt_br]" CODE="[QT_BR]" isMetric="no" class="brit-volumes">
-      <name>quart</name>
-      <property>volume</property>
-      <value Unit="[gal_br]/4" UNIT="[GAL_BR]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pt_br]" CODE="[PT_BR]" isMetric="no" class="brit-volumes">
-      <name>pint</name>
-      <property>volume</property>
-      <value Unit="[qt_br]/2" UNIT="[QT_BR]/2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[gil_br]" CODE="[GIL_BR]" isMetric="no" class="brit-volumes">
-      <name>gill</name>
-      <property>volume</property>
-      <value Unit="[pt_br]/4" UNIT="[PT_BR]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[foz_br]" CODE="[FOZ_BR]" isMetric="no" class="brit-volumes">
-      <name>fluid ounce</name>
-      <property>volume</property>
-      <value Unit="[gil_br]/5" UNIT="[GIL_BR]/5" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[fdr_br]" CODE="[FDR_BR]" isMetric="no" class="brit-volumes">
-      <name>fluid dram</name>
-      <property>volume</property>
-      <value Unit="[foz_br]/8" UNIT="[FOZ_BR]/8" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[min_br]" CODE="[MIN_BR]" isMetric="no" class="brit-volumes">
-      <name>minim</name>
-      <property>volume</property>
-      <value Unit="[fdr_br]/60" UNIT="[FDR_BR]/60" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[gr]" CODE="[GR]" isMetric="no" class="avoirdupois">
-      <name>grain</name>
-      <property>mass</property>
-      <value Unit="mg" UNIT="MG" value="64.79891">64.79891</value>
-   </unit>
-   <unit xmlns="" Code="[lb_av]" CODE="[LB_AV]" isMetric="no" class="avoirdupois">
-      <name>pound</name>
-      <printSymbol>lb</printSymbol>
-      <property>mass</property>
-      <value Unit="[gr]" UNIT="[GR]" value="7000">7000</value>
-   </unit>
-   <unit xmlns="" Code="[oz_av]" CODE="[OZ_AV]" isMetric="no" class="avoirdupois">
-      <name>ounce</name>
-      <printSymbol>oz</printSymbol>
-      <property>mass</property>
-      <value Unit="[lb_av]/16" UNIT="[LB_AV]/16" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[dr_av]" CODE="[DR_AV]" isMetric="no" class="avoirdupois">
-      <name>dram</name>
-      <property>mass</property>
-      <value Unit="[oz_av]/16" UNIT="[OZ_AV]/16" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[scwt_av]" CODE="[SCWT_AV]" isMetric="no" class="avoirdupois">
-      <name>short hundredweight</name>
-      <name>U.S. hundredweight</name>
-      <property>mass</property>
-      <value Unit="[lb_av]" UNIT="[LB_AV]" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="[lcwt_av]" CODE="[LCWT_AV]" isMetric="no" class="avoirdupois">
-      <name>long hunderdweight</name>
-      <name>British hundredweight</name>
-      <property>mass</property>
-      <value Unit="[lb_av]" UNIT="[LB_AV]" value="112">112</value>
-   </unit>
-   <unit xmlns="" Code="[ston_av]" CODE="[STON_AV]" isMetric="no" class="avoirdupois">
-      <name>short ton</name>
-      <name>U.S. ton</name>
-      <property>mass</property>
-      <value Unit="[scwt_av]" UNIT="[SCWT_AV]" value="20">20</value>
-   </unit>
-   <unit xmlns="" Code="[lton_av]" CODE="[LTON_AV]" isMetric="no" class="avoirdupois">
-      <name>long ton</name>
-      <name>British ton</name>
-      <property>mass</property>
-      <value Unit="[lcwt_av]" UNIT="[LCWT_AV]" value="20">20</value>
-   </unit>
-   <unit xmlns="" Code="[stone_av]" CODE="[STONE_AV]" isMetric="no" class="avoirdupois">
-      <name>stone</name>
-      <name>British stone</name>
-      <property>mass</property>
-      <value Unit="[lb_av]" UNIT="[LB_AV]" value="14">14</value>
-   </unit>
-   <unit xmlns="" Code="[pwt_tr]" CODE="[PWT_TR]" isMetric="no" class="troy">
-      <name>pennyweight</name>
-      <property>mass</property>
-      <value Unit="[gr]" UNIT="[GR]" value="24">24</value>
-   </unit>
-   <unit xmlns="" Code="[oz_tr]" CODE="[OZ_TR]" isMetric="no" class="troy">
-      <name>ounce</name>
-      <property>mass</property>
-      <value Unit="[pwt_tr]" UNIT="[PWT_TR]" value="20">20</value>
-   </unit>
-   <unit xmlns="" Code="[lb_tr]" CODE="[LB_TR]" isMetric="no" class="troy">
-      <name>pound</name>
-      <property>mass</property>
-      <value Unit="[oz_tr]" UNIT="[OZ_TR]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[sc_ap]" CODE="[SC_AP]" isMetric="no" class="apoth">
-      <name>scruple</name>
-      <property>mass</property>
-      <value Unit="[gr]" UNIT="[GR]" value="20">20</value>
-   </unit>
-   <unit xmlns="" Code="[dr_ap]" CODE="[DR_AP]" isMetric="no" class="apoth">
-      <name>dram</name>
-      <name>drachm</name>
-      <property>mass</property>
-      <value Unit="[sc_ap]" UNIT="[SC_AP]" value="3">3</value>
-   </unit>
-   <unit xmlns="" Code="[oz_ap]" CODE="[OZ_AP]" isMetric="no" class="apoth">
-      <name>ounce</name>
-      <property>mass</property>
-      <value Unit="[dr_ap]" UNIT="[DR_AP]" value="8">8</value>
-   </unit>
-   <unit xmlns="" Code="[lb_ap]" CODE="[LB_AP]" isMetric="no" class="apoth">
-      <name>pound</name>
-      <property>mass</property>
-      <value Unit="[oz_ap]" UNIT="[OZ_AP]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[oz_m]" CODE="[OZ_M]" isMetric="no" class="apoth">
-      <name>metric ounce</name>
-      <property>mass</property>
-      <value Unit="g" UNIT="g" value="28">28</value>
-   </unit>
-   <unit xmlns="" Code="[lne]" CODE="[LNE]" isMetric="no" class="typeset">
-      <name>line</name>
-      <property>length</property>
-      <value Unit="[in_i]/12" UNIT="[IN_I]/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pnt]" CODE="[PNT]" isMetric="no" class="typeset">
-      <name>point</name>
-      <property>length</property>
-      <value Unit="[lne]/6" UNIT="[LNE]/6" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pca]" CODE="[PCA]" isMetric="no" class="typeset">
-      <name>pica</name>
-      <property>length</property>
-      <value Unit="[pnt]" UNIT="[PNT]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[pnt_pr]" CODE="[PNT_PR]" isMetric="no" class="typeset">
-      <name>Printer's point</name>
-      <property>length</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="0.013837">0.013837</value>
-   </unit>
-   <unit xmlns="" Code="[pca_pr]" CODE="[PCA_PR]" isMetric="no" class="typeset">
-      <name>Printer's pica</name>
-      <property>length</property>
-      <value Unit="[pnt_pr]" UNIT="[PNT_PR]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[pied]" CODE="[PIED]" isMetric="no" class="typeset">
-      <name>pied</name>
-      <name>French foot</name>
-      <property>length</property>
-      <value Unit="cm" UNIT="CM" value="32.48">32.48</value>
-   </unit>
-   <unit xmlns="" Code="[pouce]" CODE="[POUCE]" isMetric="no" class="typeset">
-      <name>pouce</name>
-      <name>French inch</name>
-      <property>length</property>
-      <value Unit="[pied]/12" UNIT="[PIED]/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ligne]" CODE="[LIGNE]" isMetric="no" class="typeset">
-      <name>ligne</name>
-      <name>French line</name>
-      <property>length</property>
-      <value Unit="[pouce]/12" UNIT="[POUCE]/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[didot]" CODE="[DIDOT]" isMetric="no" class="typeset">
-      <name>didot</name>
-      <name>Didot's point</name>
-      <property>length</property>
-      <value Unit="[ligne]/6" UNIT="[LIGNE]/6" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cicero]" CODE="[CICERO]" isMetric="no" class="typeset">
-      <name>cicero</name>
-      <name>Didot's pica</name>
-      <property>length</property>
-      <value Unit="[didot]" UNIT="[DIDOT]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[degF]" CODE="[DEGF]" isMetric="no" isSpecial="yes" class="heat">
-      <name>degree Fahrenheit</name>
-      <printSymbol>&#176;F</printSymbol>
-      <property>temperature</property>
-      <value Unit="degf(5 K/9)" UNIT="DEGF(5 K/9)">
-         <function name="degF" value="5" Unit="K/9"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[degR]" CODE="[degR]" isMetric="no" class="heat">
-      <name>degree Rankine</name>
-      <printSymbol>&#176;R</printSymbol>
-      <property>temperature</property>
-      <value value="5" Unit="K/9" UNIT="K/9">5</value>
-   </unit>
-   <unit xmlns="" Code="cal_[15]" CODE="CAL_[15]" isMetric="yes" class="heat">
-      <name>calorie at 15&#160;&#176;C</name>
-      <printSymbol>cal<sub>15&#176;C</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.18580">4.18580</value>
-   </unit>
-   <unit xmlns="" Code="cal_[20]" CODE="CAL_[20]" isMetric="yes" class="heat">
-      <name>calorie at 20&#160;&#176;C</name>
-      <printSymbol>cal<sub>20&#176;C</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.18190">4.18190</value>
-   </unit>
-   <unit xmlns="" Code="cal_m" CODE="CAL_M" isMetric="yes" class="heat">
-      <name>mean calorie</name>
-      <printSymbol>cal<sub>m</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.19002">4.19002</value>
-   </unit>
-   <unit xmlns="" Code="cal_IT" CODE="CAL_IT" isMetric="yes" class="heat">
-      <name>international table calorie</name>
-      <printSymbol>cal<sub>IT</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.1868">4.1868</value>
-   </unit>
-   <unit xmlns="" Code="cal_th" CODE="CAL_TH" isMetric="yes" class="heat">
-      <name>thermochemical calorie</name>
-      <printSymbol>cal<sub>th</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.184">4.184</value>
-   </unit>
-   <unit xmlns="" Code="cal" CODE="CAL" isMetric="yes" class="heat">
-      <name>calorie</name>
-      <printSymbol>cal</printSymbol>
-      <property>energy</property>
-      <value Unit="cal_th" UNIT="CAL_TH" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Cal]" CODE="[CAL]" isMetric="no" class="heat">
-      <name>nutrition label Calories</name>
-      <printSymbol>Cal</printSymbol>
-      <property>energy</property>
-      <value Unit="kcal_th" UNIT="KCAL_TH" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_39]" CODE="[BTU_39]" isMetric="no" class="heat">
-      <name>British thermal unit at 39&#160;&#176;F</name>
-      <printSymbol>Btu<sub>39&#176;F</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05967">1.05967</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_59]" CODE="[BTU_59]" isMetric="no" class="heat">
-      <name>British thermal unit at 59&#160;&#176;F</name>
-      <printSymbol>Btu<sub>59&#176;F</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05480">1.05480</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_60]" CODE="[BTU_60]" isMetric="no" class="heat">
-      <name>British thermal unit at 60&#160;&#176;F</name>
-      <printSymbol>Btu<sub>60&#176;F</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05468">1.05468</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_m]" CODE="[BTU_M]" isMetric="no" class="heat">
-      <name>mean British thermal unit</name>
-      <printSymbol>Btu<sub>m</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05587">1.05587</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_IT]" CODE="[BTU_IT]" isMetric="no" class="heat">
-      <name>international table British thermal unit</name>
-      <printSymbol>Btu<sub>IT</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05505585262">1.05505585262</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_th]" CODE="[BTU_TH]" isMetric="no" class="heat">
-      <name>thermochemical British thermal unit</name>
-      <printSymbol>Btu<sub>th</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.054350">1.054350</value>
-   </unit>
-   <unit xmlns="" Code="[Btu]" CODE="[BTU]" isMetric="no" class="heat">
-      <name>British thermal unit</name>
-      <printSymbol>btu</printSymbol>
-      <property>energy</property>
-      <value Unit="[Btu_th]" UNIT="[BTU_TH]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[HP]" CODE="[HP]" isMetric="no" class="heat">
-      <name>horsepower</name>
-      <property>power</property>
-      <value Unit="[ft_i].[lbf_av]/s" UNIT="[FT_I].[LBF_AV]/S" value="550">550</value>
-   </unit>
-   <unit xmlns="" Code="tex" CODE="TEX" isMetric="yes" class="heat">
-      <name>tex</name>
-      <printSymbol>tex</printSymbol>
-      <property>linear mass density (of textile thread)</property>
-      <value value="1" Unit="g/km" UNIT="G/KM">1</value>
-   </unit>
-   <unit xmlns="" Code="[den]" CODE="[DEN]" isMetric="no" class="heat">
-      <name>Denier</name>
-      <printSymbol>den</printSymbol>
-      <property>linear mass density (of textile thread)</property>
-      <value value="1" Unit="g/9/km" UNIT="G/9/KM">1</value>
-   </unit>
-   <unit xmlns="" Code="m[H2O]" CODE="M[H2O]" isMetric="yes" class="clinical">
-      <name>meter of water column</name>
-      <printSymbol>m&#160;H<sub>
-            <r>2</r>
-         </sub>O</printSymbol>
-      <property>pressure</property>
-      <value Unit="kPa" UNIT="KPAL" value="980665e-5">9.80665</value>
-   </unit>
-   <unit xmlns="" Code="m[Hg]" CODE="M[HG]" isMetric="yes" class="clinical">
-      <name>meter of mercury column</name>
-      <printSymbol>m&#160;Hg</printSymbol>
-      <property>pressure</property>
-      <value Unit="kPa" UNIT="KPAL" value="133.3220">133.3220</value>
-   </unit>
-   <unit xmlns="" Code="[in_i'H2O]" CODE="[IN_I'H2O]" isMetric="no" class="clinical">
-      <name>inch of water column</name>
-      <printSymbol>in&#160;H<sub>
-            <r>2</r>
-         </sub>O</printSymbol>
-      <property>pressure</property>
-      <value Unit="m[H2O].[in_i]/m" UNIT="M[H2O].[IN_I]/M" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[in_i'Hg]" CODE="[IN_I'HG]" isMetric="no" class="clinical">
-      <name>inch of mercury column</name>
-      <printSymbol>in&#160;Hg</printSymbol>
-      <property>pressure</property>
-      <value Unit="m[Hg].[in_i]/m" UNIT="M[HG].[IN_I]/M" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[PRU]" CODE="[PRU]" isMetric="no" class="clinical">
-      <name>peripheral vascular resistance unit</name>
-      <printSymbol>P.R.U.</printSymbol>
-      <property>fluid resistance</property>
-      <value Unit="mm[Hg].s/ml" UNIT="MM[HG].S/ML" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[wood'U]" CODE="[WOOD'U]" isMetric="no" class="clinical">
-      <name>Wood unit</name>
-      <printSymbol>Wood U.</printSymbol>
-      <property>fluid resistance</property>
-      <value Unit="mm[Hg].min/L" UNIT="MM[HG].MIN/L" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[diop]" CODE="[DIOP]" isMetric="no" class="clinical">
-      <name>diopter</name>
-      <printSymbol>dpt</printSymbol>
-      <property>refraction of a lens</property>
-      <value Unit="/m" UNIT="/M" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[p'diop]" CODE="[P'DIOP]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>prism diopter</name>
-      <printSymbol>PD</printSymbol>
-      <property>refraction of a prism</property>
-      <value Unit="100tan(1 rad)" UNIT="100TAN(1 RAD)">
-         <function name="tanTimes100" value="1" Unit="deg"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="%[slope]" CODE="%[SLOPE]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>percent of slope</name>
-      <printSymbol>%</printSymbol>
-      <property>slope</property>
-      <value Unit="100tan(1 rad)" UNIT="100TAN(1 RAD)">
-         <function name="100tan" value="1" Unit="deg"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[mesh_i]" CODE="[MESH_I]" isMetric="no" class="clinical">
-      <name>mesh</name>
-      <property>lineic number</property>
-      <value Unit="/[in_i]" UNIT="/[IN_I]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Ch]" CODE="[CH]" isMetric="no" class="clinical">
-      <name>Charri&#232;re</name>
-      <name>french</name>
-      <printSymbol>Ch</printSymbol>
-      <property>gauge of catheters</property>
-      <value Unit="mm/3" UNIT="MM/3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[drp]" CODE="[DRP]" isMetric="no" class="clinical">
-      <name>drop</name>
-      <printSymbol>drp</printSymbol>
-      <property>volume</property>
-      <value Unit="ml/20" UNIT="ML/20" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hnsf'U]" CODE="[HNSF'U]" isMetric="no" class="clinical">
-      <name>Hounsfield unit</name>
-      <printSymbol>HF</printSymbol>
-      <property>x-ray attenuation</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[MET]" CODE="[MET]" isMetric="no" class="clinical">
-      <name>metabolic equivalent</name>
-      <printSymbol>MET</printSymbol>
-      <property>metabolic cost of physical activity</property>
-      <value Unit="mL/min/kg" UNIT="ML/MIN/KG" value="3.5">3.5</value>
-   </unit>
-   <unit xmlns="" Code="[hp'_X]" CODE="[HP'_X]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>homeopathic potency of decimal series (retired)</name>
-      <printSymbol>X</printSymbol>
-      <property>homeopathic potency (retired)</property>
-      <value Unit="hpX(1 1)" UNIT="HPX(1 1)">
-         <function name="hpX" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[hp'_C]" CODE="[HP'_C]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>homeopathic potency of centesimal series (retired)</name>
-      <printSymbol>C</printSymbol>
-      <property>homeopathic potency (retired)</property>
-      <value Unit="hpC(1 1)" UNIT="HPC(1 1)">
-         <function name="hpC" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[hp'_M]" CODE="[HP'_M]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>homeopathic potency of millesimal series (retired)</name>
-      <printSymbol>M</printSymbol>
-      <property>homeopathic potency (retired)</property>
-      <value Unit="hpM(1 1)" UNIT="HPM(1 1)">
-         <function name="hpM" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[hp'_Q]" CODE="[HP'_Q]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>homeopathic potency of quintamillesimal series (retired)</name>
-      <printSymbol>Q</printSymbol>
-      <property>homeopathic potency (retired)</property>
-      <value Unit="hpQ(1 1)" UNIT="HPQ(1 1)">
-         <function name="hpQ" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[hp_X]" CODE="[HP_X]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of decimal hahnemannian series</name>
-      <printSymbol>X</printSymbol>
-      <property>homeopathic potency (Hahnemann)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hp_C]" CODE="[HP_C]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of centesimal hahnemannian series</name>
-      <printSymbol>C</printSymbol>
-      <property>homeopathic potency (Hahnemann)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hp_M]" CODE="[HP_M]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of millesimal hahnemannian series</name>
-      <printSymbol>M</printSymbol>
-      <property>homeopathic potency (Hahnemann)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hp_Q]" CODE="[HP_Q]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of quintamillesimal hahnemannian series</name>
-      <printSymbol>Q</printSymbol>
-      <property>homeopathic potency (Hahnemann)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[kp_X]" CODE="[KP_X]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of decimal korsakovian series</name>
-      <printSymbol>X</printSymbol>
-      <property>homeopathic potency (Korsakov)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[kp_C]" CODE="[KP_C]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of centesimal korsakovian series</name>
-      <printSymbol>C</printSymbol>
-      <property>homeopathic potency (Korsakov)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[kp_M]" CODE="[KP_M]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of millesimal korsakovian series</name>
-      <printSymbol>M</printSymbol>
-      <property>homeopathic potency (Korsakov)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[kp_Q]" CODE="[KP_Q]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of quintamillesimal korsakovian series</name>
-      <printSymbol>Q</printSymbol>
-      <property>homeopathic potency (Korsakov)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="eq" CODE="EQ" isMetric="yes" class="chemical">
-      <name>equivalents</name>
-      <printSymbol>eq</printSymbol>
-      <property>amount of substance</property>
-      <value Unit="mol" UNIT="MOL" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="osm" CODE="OSM" isMetric="yes" class="chemical">
-      <name>osmole</name>
-      <printSymbol>osm</printSymbol>
-      <property>amount of substance (dissolved particles)</property>
-      <value Unit="mol" UNIT="MOL" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pH]" CODE="[PH]" isMetric="no" isSpecial="yes" class="chemical">
-      <name>pH</name>
-      <printSymbol>pH</printSymbol>
-      <property>acidity</property>
-      <value Unit="pH(1 mol/l)" UNIT="PH(1 MOL/L)">
-         <function name="pH" value="1" Unit="mol/l"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="g%" CODE="G%" isMetric="yes" class="chemical">
-      <name>gram percent</name>
-      <printSymbol>g%</printSymbol>
-      <property>mass concentration</property>
-      <value Unit="g/dl" UNIT="G/DL" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[S]" CODE="[S]" isMetric="no" class="chemical">
-      <name>Svedberg unit</name>
-      <printSymbol>S</printSymbol>
-      <property>sedimentation coefficient</property>
-      <value Unit="10*-13.s" UNIT="10*-13.S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[HPF]" CODE="[HPF]" isMetric="no" class="chemical">
-      <name>high power field</name>
-      <printSymbol>HPF</printSymbol>
-      <property>view area in microscope</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[LPF]" CODE="[LPF]" isMetric="no" class="chemical">
-      <name>low power field</name>
-      <printSymbol>LPF</printSymbol>
-      <property>view area in microscope</property>
-      <value Unit="1" UNIT="1" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="kat" CODE="KAT" isMetric="yes" class="chemical">
-      <name>katal</name>
-      <printSymbol>kat</printSymbol>
-      <property>catalytic activity</property>
-      <value Unit="mol/s" UNIT="MOL/S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="U" CODE="U" isMetric="yes" class="chemical">
-      <name>Unit</name>
-      <printSymbol>U</printSymbol>
-      <property>catalytic activity</property>
-      <value Unit="umol/min" UNIT="UMOL/MIN" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[iU]" CODE="[IU]" isMetric="yes" isArbitrary="yes"
-         class="chemical">
-      <name>international unit</name>
-      <printSymbol>IU</printSymbol>
-      <property>arbitrary</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[IU]" CODE="[IU]" isMetric="yes" isArbitrary="yes"
-         class="chemical">
-      <name>international unit</name>
-      <printSymbol>i.U.</printSymbol>
-      <property>arbitrary</property>
-      <value Unit="[iU]" UNIT="[IU]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[arb'U]" CODE="[ARB'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>arbitary unit</name>
-      <printSymbol>arb. U</printSymbol>
-      <property>arbitrary</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[USP'U]" CODE="[USP'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>United States Pharmacopeia unit</name>
-      <printSymbol>U.S.P.</printSymbol>
-      <property>arbitrary</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[GPL'U]" CODE="[GPL'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>GPL unit</name>
-      <property>biologic activity of anticardiolipin IgG</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[MPL'U]" CODE="[MPL'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>MPL unit</name>
-      <property>biologic activity of anticardiolipin IgM</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[APL'U]" CODE="[APL'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>APL unit</name>
-      <property>biologic activity of anticardiolipin IgA</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[beth'U]" CODE="[BETH'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Bethesda unit</name>
-      <property>biologic activity of factor VIII inhibitor</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[anti'Xa'U]" CODE="[ANTI'XA'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>anti factor Xa unit</name>
-      <property>biologic activity of factor Xa inhibitor (heparin)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[todd'U]" CODE="[TODD'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Todd unit</name>
-      <property>biologic activity antistreptolysin O</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[dye'U]" CODE="[DYE'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Dye unit</name>
-      <property>biologic activity of amylase</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[smgy'U]" CODE="[SMGY'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Somogyi unit</name>
-      <property>biologic activity of amylase</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[bdsk'U]" CODE="[BDSK'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Bodansky unit</name>
-      <property>biologic activity of phosphatase</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ka'U]" CODE="[KA'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>King-Armstrong unit</name>
-      <property>biologic activity of phosphatase</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[knk'U]" CODE="[KNK'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Kunkel unit</name>
-      <property>arbitrary biologic activity</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[mclg'U]" CODE="[MCLG'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Mac Lagan unit</name>
-      <property>arbitrary biologic activity</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[tb'U]" CODE="[TB'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>tuberculin unit</name>
-      <property>biologic activity of tuberculin</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[CCID_50]" CODE="[CCID_50]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>50% cell culture infectious dose</name>
-      <printSymbol>CCID<sub>50</sub>
-      </printSymbol>
-      <property>biologic activity (infectivity) of an infectious agent preparation</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[TCID_50]" CODE="[TCID_50]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>50% tissue culture infectious dose</name>
-      <printSymbol>TCID<sub>50</sub>
-      </printSymbol>
-      <property>biologic activity (infectivity) of an infectious agent preparation</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[EID_50]" CODE="[EID_50]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>50% embryo infectious dose</name>
-      <printSymbol>EID<sub>50</sub>
-      </printSymbol>
-      <property>biologic activity (infectivity) of an infectious agent preparation</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[PFU]" CODE="[PFU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>plaque forming units</name>
-      <printSymbol>PFU</printSymbol>
-      <property>amount of an infectious agent</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[FFU]" CODE="[FFU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>focus forming units</name>
-      <printSymbol>FFU</printSymbol>
-      <property>amount of an infectious agent</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[CFU]" CODE="[CFU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>colony forming units</name>
-      <printSymbol>CFU</printSymbol>
-      <property>amount of a proliferating organism</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[BAU]" CODE="[BAU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>bioequivalent allergen unit</name>
-      <printSymbol>BAU</printSymbol>
-      <property>amount of an allergen callibrated through in-vivo testing based on the ID50EAL method of (intradermal dilution for 50mm sum of erythema diameters</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[AU]" CODE="[AU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>allergen unit</name>
-      <printSymbol>AU</printSymbol>
-      <property>procedure defined amount of an allergen using some reference standard</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Amb'a'1'U]" CODE="[AMB'A'1'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>allergen unit for Ambrosia artemisiifolia</name>
-      <printSymbol>Amb a 1 U</printSymbol>
-      <property>procedure defined amount of the major allergen of ragweed.</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[PNU]" CODE="[PNU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>protein nitrogen unit</name>
-      <printSymbol>PNU</printSymbol>
-      <property>procedure defined amount of a protein substance</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Lf]" CODE="[LF]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Limit of flocculation</name>
-      <printSymbol>Lf</printSymbol>
-      <property>procedure defined amount of an antigen substance</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[D'ag'U]" CODE="[D'AG'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>D-antigen unit</name>
-      <printSymbol/>
-      <property>procedure defined amount of a poliomyelitis d-antigen substance</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[FEU]" CODE="[FEU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>fibrinogen equivalent unit</name>
-      <printSymbol/>
-      <property>amount of fibrinogen broken down into the measured d-dimers</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ELU]" CODE="[ELU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>ELISA unit</name>
-      <printSymbol/>
-      <property>arbitrary ELISA unit</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[EU]" CODE="[EU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Ehrlich unit</name>
-      <printSymbol/>
-      <property>Ehrlich unit</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Np" CODE="NEP" isMetric="yes" isSpecial="yes" class="levels">
-      <name>neper</name>
-      <printSymbol>Np</printSymbol>
-      <property>level</property>
-      <value Unit="ln(1 1)" UNIT="LN(1 1)">
-         <function name="ln" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B" CODE="B" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel</name>
-      <printSymbol>B</printSymbol>
-      <property>level</property>
-      <value Unit="lg(1 1)" UNIT="LG(1 1)">
-         <function name="lg" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[SPL]" CODE="B[SPL]" isMetric="yes" isSpecial="yes"
-         class="levels">
-      <name>bel sound pressure</name>
-      <printSymbol>B(SPL)</printSymbol>
-      <property>pressure level</property>
-      <value Unit="2lg(2 10*-5.Pa)" UNIT="2LG(2 10*-5.PAL)">
-         <function name="lgTimes2" value="2" Unit="10*-5.Pa"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[V]" CODE="B[V]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel volt</name>
-      <printSymbol>B(V)</printSymbol>
-      <property>electric potential level</property>
-      <value Unit="2lg(1 V)" UNIT="2LG(1 V)">
-         <function name="lgTimes2" value="1" Unit="V"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[mV]" CODE="B[MV]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel millivolt</name>
-      <printSymbol>B(mV)</printSymbol>
-      <property>electric potential level</property>
-      <value Unit="2lg(1 mV)" UNIT="2LG(1 MV)">
-         <function name="lgTimes2" value="1" Unit="mV"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[uV]" CODE="B[UV]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel microvolt</name>
-      <printSymbol>B(&#956;V)</printSymbol>
-      <property>electric potential level</property>
-      <value Unit="2lg(1 uV)" UNIT="2LG(1 UV)">
-         <function name="lgTimes2" value="1" Unit="uV"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[10.nV]" CODE="B[10.NV]" isMetric="yes" isSpecial="yes"
-         class="levels">
-      <name>bel 10 nanovolt</name>
-      <printSymbol>B(10 nV)</printSymbol>
-      <property>electric potential level</property>
-      <value Unit="2lg(10 nV)" UNIT="2LG(10 NV)">
-         <function name="lgTimes2" value="10" Unit="nV"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[W]" CODE="B[W]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel watt</name>
-      <printSymbol>B(W)</printSymbol>
-      <property>power level</property>
-      <value Unit="lg(1 W)" UNIT="LG(1 W)">
-         <function name="lg" value="1" Unit="W"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[kW]" CODE="B[KW]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel kilowatt</name>
-      <printSymbol>B(kW)</printSymbol>
-      <property>power level</property>
-      <value Unit="lg(1 kW)" UNIT="LG(1 KW)">
-         <function name="lg" value="1" Unit="kW"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="st" CODE="STR" isMetric="yes" class="misc">
-      <name>stere</name>
-      <printSymbol>st</printSymbol>
-      <property>volume</property>
-      <value Unit="m3" UNIT="M3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Ao" CODE="AO" isMetric="no" class="misc">
-      <name>&#197;ngstr&#246;m</name>
-      <printSymbol>&#197;</printSymbol>
-      <property>length</property>
-      <value Unit="nm" UNIT="NM" value="0.1">0.1</value>
-   </unit>
-   <unit xmlns="" Code="b" CODE="BRN" isMetric="no" class="misc">
-      <name>barn</name>
-      <printSymbol>b</printSymbol>
-      <property>action area</property>
-      <value Unit="fm2" UNIT="FM2" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="att" CODE="ATT" isMetric="no" class="misc">
-      <name>technical atmosphere</name>
-      <printSymbol>at</printSymbol>
-      <property>pressure</property>
-      <value Unit="kgf/cm2" UNIT="KGF/CM2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="mho" CODE="MHO" isMetric="yes" class="misc">
-      <name>mho</name>
-      <printSymbol>mho</printSymbol>
-      <property>electric conductance</property>
-      <value Unit="S" UNIT="S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[psi]" CODE="[PSI]" isMetric="no" class="misc">
-      <name>pound per sqare inch</name>
-      <printSymbol>psi</printSymbol>
-      <property>pressure</property>
-      <value Unit="[lbf_av]/[in_i]2" UNIT="[LBF_AV]/[IN_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="circ" CODE="CIRC" isMetric="no" class="misc">
-      <name>circle</name>
-      <printSymbol>circ</printSymbol>
-      <property>plane angle</property>
-      <value Unit="[pi].rad" UNIT="[PI].RAD" value="2">2</value>
-   </unit>
-   <unit xmlns="" Code="sph" CODE="SPH" isMetric="no" class="misc">
-      <name>spere</name>
-      <printSymbol>sph</printSymbol>
-      <property>solid angle</property>
-      <value Unit="[pi].sr" UNIT="[PI].SR" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[car_m]" CODE="[CAR_M]" isMetric="no" class="misc">
-      <name>metric carat</name>
-      <printSymbol>ct<sub>m</sub>
-      </printSymbol>
-      <property>mass</property>
-      <value Unit="g" UNIT="G" value="2e-1">0.2</value>
-   </unit>
-   <unit xmlns="" Code="[car_Au]" CODE="[CAR_AU]" isMetric="no" class="misc">
-      <name>carat of gold alloys</name>
-      <printSymbol>ct<sub>
-            <r>Au</r>
-         </sub>
-      </printSymbol>
-      <property>mass fraction</property>
-      <value Unit="/24" UNIT="/24" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[smoot]" CODE="[SMOOT]" isMetric="no" class="misc">
-      <name>Smoot</name>
-      <printSymbol/>
-      <property>length</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="67">67</value>
-   </unit>
-   <unit xmlns="" Code="bit_s" CODE="BIT_S" isMetric="no" isSpecial="yes"
-         class="infotech">
-      <name>bit</name>
-      <printSymbol>bit<sub>s</sub>
-      </printSymbol>
-      <property>amount of information</property>
-      <value Unit="ld(1 1)" UNIT="ld(1 1)">
-         <function name="ld" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="bit" CODE="BIT" isMetric="yes" class="infotech">
-      <name>bit</name>
-      <printSymbol>bit</printSymbol>
-      <property>amount of information</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="By" CODE="BY" isMetric="yes" class="infotech">
-      <name>byte</name>
-      <printSymbol>B</printSymbol>
-      <property>amount of information</property>
-      <value Unit="bit" UNIT="bit" value="8">8</value>
-   </unit>
-   <unit xmlns="" Code="Bd" CODE="BD" isMetric="yes" class="infotech">
-      <name>baud</name>
-      <printSymbol>Bd</printSymbol>
-      <property>signal transmission rate</property>
-      <value Unit="/s" UNIT="/s" value="1">1</value>
-   </unit>
-   <prefix xmlns="" Code="Ki" CODE="KIB">
-      <name>kibi</name>
-      <printSymbol>Ki</printSymbol>
-      <value value="1024">1024</value>
-   </prefix>
-   <prefix xmlns="" Code="Mi" CODE="MIB">
-      <name>mebi</name>
-      <printSymbol>Mi</printSymbol>
-      <value value="1048576">1048576</value>
-   </prefix>
-   <prefix xmlns="" Code="Gi" CODE="GIB">
-      <name>gibi</name>
-      <printSymbol>Gi</printSymbol>
-      <value value="1073741824">1073741824</value>
-   </prefix>
-   <prefix xmlns="" Code="Ti" CODE="TIB">
-      <name>tebi</name>
-      <printSymbol>Ti</printSymbol>
-      <value value="1099511627776">1099511627776</value>
-   </prefix>
+<?xml version="1.0" encoding="ascii"?>

+<root xmlns="http://unitsofmeasure.org/ucum-essence" version="1.9"

+      revision="$Revision: 16410 $"

+      revision-date="$Date: 2013-10-21 21:24:43 -0700 (Mon, 21 Oct 2013) $">

+   <prefix xmlns="" Code="Y" CODE="YA">

+      <name>yotta</name>

+      <printSymbol>Y</printSymbol>

+      <value value="1e24">1 &#215; 10<sup>24</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="Z" CODE="ZA">

+      <name>zetta</name>

+      <printSymbol>Z</printSymbol>

+      <value value="1e21">1 &#215; 10<sup>21</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="E" CODE="EX">

+      <name>exa</name>

+      <printSymbol>E</printSymbol>

+      <value value="1e18">1 &#215; 10<sup>18</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="P" CODE="PT">

+      <name>peta</name>

+      <printSymbol>P</printSymbol>

+      <value value="1e15">1 &#215; 10<sup>15</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="T" CODE="TR">

+      <name>tera</name>

+      <printSymbol>T</printSymbol>

+      <value value="1e12">1 &#215; 10<sup>12</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="G" CODE="GA">

+      <name>giga</name>

+      <printSymbol>G</printSymbol>

+      <value value="1e9">1 &#215; 10<sup>9</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="M" CODE="MA">

+      <name>mega</name>

+      <printSymbol>M</printSymbol>

+      <value value="1e6">1 &#215; 10<sup>6</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="k" CODE="K">

+      <name>kilo</name>

+      <printSymbol>k</printSymbol>

+      <value value="1e3">1 &#215; 10<sup>3</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="h" CODE="H">

+      <name>hecto</name>

+      <printSymbol>h</printSymbol>

+      <value value="1e2">1 &#215; 10<sup>2</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="da" CODE="DA">

+      <name>deka</name>

+      <printSymbol>da</printSymbol>

+      <value value="1e1">1 &#215; 10<sup>1</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="d" CODE="D">

+      <name>deci</name>

+      <printSymbol>d</printSymbol>

+      <value value="1e-1">1 &#215; 10<sup>-1</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="c" CODE="C">

+      <name>centi</name>

+      <printSymbol>c</printSymbol>

+      <value value="1e-2">1 &#215; 10<sup>-2</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="m" CODE="M">

+      <name>milli</name>

+      <printSymbol>m</printSymbol>

+      <value value="1e-3">1 &#215; 10<sup>-3</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="u" CODE="U">

+      <name>micro</name>

+      <printSymbol>&#956;</printSymbol>

+      <value value="1e-6">1 &#215; 10<sup>-6</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="n" CODE="N">

+      <name>nano</name>

+      <printSymbol>n</printSymbol>

+      <value value="1e-9">1 &#215; 10<sup>-9</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="p" CODE="P">

+      <name>pico</name>

+      <printSymbol>p</printSymbol>

+      <value value="1e-12">1 &#215; 10<sup>-12</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="f" CODE="F">

+      <name>femto</name>

+      <printSymbol>f</printSymbol>

+      <value value="1e-15">1 &#215; 10<sup>-15</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="a" CODE="A">

+      <name>atto</name>

+      <printSymbol>a</printSymbol>

+      <value value="1e-18">1 &#215; 10<sup>-18</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="z" CODE="ZO">

+      <name>zepto</name>

+      <printSymbol>z</printSymbol>

+      <value value="1e-21">1 &#215; 10<sup>-21</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="y" CODE="YO">

+      <name>yocto</name>

+      <printSymbol>y</printSymbol>

+      <value value="1e-24">1 &#215; 10<sup>-24</sup>

+      </value>

+   </prefix>

+   <base-unit xmlns="" Code="m" CODE="M" dim="L">

+      <name>meter</name>

+      <printSymbol>m</printSymbol>

+      <property>length</property>

+   </base-unit>

+   <base-unit xmlns="" Code="s" CODE="S" dim="T">

+      <name>second</name>

+      <printSymbol>s</printSymbol>

+      <property>time</property>

+   </base-unit>

+   <base-unit xmlns="" Code="g" CODE="G" dim="M">

+      <name>gram</name>

+      <printSymbol>g</printSymbol>

+      <property>mass</property>

+   </base-unit>

+   <base-unit xmlns="" Code="rad" CODE="RAD" dim="A">

+      <name>radian</name>

+      <printSymbol>rad</printSymbol>

+      <property>plane angle</property>

+   </base-unit>

+   <base-unit xmlns="" Code="K" CODE="K" dim="C">

+      <name>Kelvin</name>

+      <printSymbol>K</printSymbol>

+      <property>temperature</property>

+   </base-unit>

+   <base-unit xmlns="" Code="C" CODE="C" dim="Q">

+      <name>Coulomb</name>

+      <printSymbol>C</printSymbol>

+      <property>electric charge</property>

+   </base-unit>

+   <base-unit xmlns="" Code="cd" CODE="CD" dim="F">

+      <name>candela</name>

+      <printSymbol>cd</printSymbol>

+      <property>luminous intensity</property>

+   </base-unit>

+   <unit xmlns="" Code="10*" CODE="10*" isMetric="no" class="dimless">

+      <name>the number ten for arbitrary powers</name>

+      <printSymbol>10</printSymbol>

+      <property>number</property>

+      <value Unit="1" UNIT="1" value="10">10</value>

+   </unit>

+   <unit xmlns="" Code="10^" CODE="10^" isMetric="no" class="dimless">

+      <name>the number ten for arbitrary powers</name>

+      <printSymbol>10</printSymbol>

+      <property>number</property>

+      <value Unit="1" UNIT="1" value="10">10</value>

+   </unit>

+   <unit xmlns="" Code="[pi]" CODE="[PI]" isMetric="no" class="dimless">

+      <name>the number pi</name>

+      <printSymbol>&#960;</printSymbol>

+      <property>number</property>

+      <value Unit="1" UNIT="1"

+             value="3.1415926535897932384626433832795028841971693993751058209749445923">&#960;</value>

+   </unit>

+   <unit xmlns="" Code="%" CODE="%" isMetric="no" class="dimless">

+      <name>percent</name>

+      <printSymbol>%</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-2" UNIT="10*-2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ppth]" CODE="[PPTH]" isMetric="no" class="dimless">

+      <name>parts per thousand</name>

+      <printSymbol>ppth</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-3" UNIT="10*-3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ppm]" CODE="[PPM]" isMetric="no" class="dimless">

+      <name>parts per million</name>

+      <printSymbol>ppm</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-6" UNIT="10*-6" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ppb]" CODE="[PPB]" isMetric="no" class="dimless">

+      <name>parts per billion</name>

+      <printSymbol>ppb</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-9" UNIT="10*-9" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pptr]" CODE="[PPTR]" isMetric="no" class="dimless">

+      <name>parts per trillion</name>

+      <printSymbol>pptr</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-12" UNIT="10*-12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="mol" CODE="MOL" isMetric="yes" class="si">

+      <name>mole</name>

+      <printSymbol>mol</printSymbol>

+      <property>amount of substance</property>

+      <value Unit="10*23" UNIT="10*23" value="6.0221367">6.0221367</value>

+   </unit>

+   <unit xmlns="" Code="sr" CODE="SR" isMetric="yes" class="si">

+      <name>steradian</name>

+      <printSymbol>sr</printSymbol>

+      <property>solid angle</property>

+      <value Unit="rad2" UNIT="RAD2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Hz" CODE="HZ" isMetric="yes" class="si">

+      <name>Hertz</name>

+      <printSymbol>Hz</printSymbol>

+      <property>frequency</property>

+      <value Unit="s-1" UNIT="S-1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="N" CODE="N" isMetric="yes" class="si">

+      <name>Newton</name>

+      <printSymbol>N</printSymbol>

+      <property>force</property>

+      <value Unit="kg.m/s2" UNIT="KG.M/S2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Pa" CODE="PAL" isMetric="yes" class="si">

+      <name>Pascal</name>

+      <printSymbol>Pa</printSymbol>

+      <property>pressure</property>

+      <value Unit="N/m2" UNIT="N/M2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="J" CODE="J" isMetric="yes" class="si">

+      <name>Joule</name>

+      <printSymbol>J</printSymbol>

+      <property>energy</property>

+      <value Unit="N.m" UNIT="N.M" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="W" CODE="W" isMetric="yes" class="si">

+      <name>Watt</name>

+      <printSymbol>W</printSymbol>

+      <property>power</property>

+      <value Unit="J/s" UNIT="J/S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="A" CODE="A" isMetric="yes" class="si">

+      <name>Amp&#232;re</name>

+      <printSymbol>A</printSymbol>

+      <property>electric current</property>

+      <value Unit="C/s" UNIT="C/S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="V" CODE="V" isMetric="yes" class="si">

+      <name>Volt</name>

+      <printSymbol>V</printSymbol>

+      <property>electric potential</property>

+      <value Unit="J/C" UNIT="J/C" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="F" CODE="F" isMetric="yes" class="si">

+      <name>Farad</name>

+      <printSymbol>F</printSymbol>

+      <property>electric capacitance</property>

+      <value Unit="C/V" UNIT="C/V" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Ohm" CODE="OHM" isMetric="yes" class="si">

+      <name>Ohm</name>

+      <printSymbol>&#937;</printSymbol>

+      <property>electric resistance</property>

+      <value Unit="V/A" UNIT="V/A" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="S" CODE="SIE" isMetric="yes" class="si">

+      <name>Siemens</name>

+      <printSymbol>S</printSymbol>

+      <property>electric conductance</property>

+      <value Unit="Ohm-1" UNIT="OHM-1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Wb" CODE="WB" isMetric="yes" class="si">

+      <name>Weber</name>

+      <printSymbol>Wb</printSymbol>

+      <property>magentic flux</property>

+      <value Unit="V.s" UNIT="V.S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Cel" CODE="CEL" isMetric="yes" isSpecial="yes" class="si">

+      <name>degree Celsius</name>

+      <printSymbol>&#176;C</printSymbol>

+      <property>temperature</property>

+      <value Unit="cel(1 K)" UNIT="CEL(1 K)">

+         <function name="Cel" value="1" Unit="K"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="T" CODE="T" isMetric="yes" class="si">

+      <name>Tesla</name>

+      <printSymbol>T</printSymbol>

+      <property>magnetic flux density</property>

+      <value Unit="Wb/m2" UNIT="WB/M2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="H" CODE="H" isMetric="yes" class="si">

+      <name>Henry</name>

+      <printSymbol>H</printSymbol>

+      <property>inductance</property>

+      <value Unit="Wb/A" UNIT="WB/A" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="lm" CODE="LM" isMetric="yes" class="si">

+      <name>lumen</name>

+      <printSymbol>lm</printSymbol>

+      <property>luminous flux</property>

+      <value Unit="cd.sr" UNIT="CD.SR" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="lx" CODE="LX" isMetric="yes" class="si">

+      <name>lux</name>

+      <printSymbol>lx</printSymbol>

+      <property>illuminance</property>

+      <value Unit="lm/m2" UNIT="LM/M2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Bq" CODE="BQ" isMetric="yes" class="si">

+      <name>Becquerel</name>

+      <printSymbol>Bq</printSymbol>

+      <property>radioactivity</property>

+      <value Unit="s-1" UNIT="S-1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Gy" CODE="GY" isMetric="yes" class="si">

+      <name>Gray</name>

+      <printSymbol>Gy</printSymbol>

+      <property>energy dose</property>

+      <value Unit="J/kg" UNIT="J/KG" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Sv" CODE="SV" isMetric="yes" class="si">

+      <name>Sievert</name>

+      <printSymbol>Sv</printSymbol>

+      <property>dose equivalent</property>

+      <value Unit="J/kg" UNIT="J/KG" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="gon" CODE="GON" isMetric="no" class="iso1000">

+      <name>gon</name>

+      <name>grade</name>

+      <printSymbol>&#9633;<sup>g</sup>

+      </printSymbol>

+      <property>plane angle</property>

+      <value Unit="deg" UNIT="DEG" value="0.9">0.9</value>

+   </unit>

+   <unit xmlns="" Code="deg" CODE="DEG" isMetric="no" class="iso1000">

+      <name>degree</name>

+      <printSymbol>&#176;</printSymbol>

+      <property>plane angle</property>

+      <value Unit="[pi].rad/360" UNIT="[PI].RAD/360" value="2">2</value>

+   </unit>

+   <unit xmlns="" Code="'" CODE="'" isMetric="no" class="iso1000">

+      <name>minute</name>

+      <printSymbol>'</printSymbol>

+      <property>plane angle</property>

+      <value Unit="deg/60" UNIT="DEG/60" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="''" CODE="''" isMetric="no" class="iso1000">

+      <name>second</name>

+      <printSymbol>''</printSymbol>

+      <property>plane angle</property>

+      <value Unit="'/60" UNIT="'/60" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="l" CODE="L" isMetric="yes" class="iso1000">

+      <name>liter</name>

+      <printSymbol>l</printSymbol>

+      <property>volume</property>

+      <value Unit="dm3" UNIT="DM3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="L" isMetric="yes" class="iso1000">

+      <name>liter</name>

+      <printSymbol>L</printSymbol>

+      <property>volume</property>

+      <value Unit="l" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="ar" CODE="AR" isMetric="yes" class="iso1000">

+      <name>are</name>

+      <printSymbol>a</printSymbol>

+      <property>area</property>

+      <value Unit="m2" UNIT="M2" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="min" CODE="MIN" isMetric="no" class="iso1000">

+      <name>minute</name>

+      <printSymbol>min</printSymbol>

+      <property>time</property>

+      <value Unit="s" UNIT="S" value="60">60</value>

+   </unit>

+   <unit xmlns="" Code="h" CODE="HR" isMetric="no" class="iso1000">

+      <name>hour</name>

+      <printSymbol>h</printSymbol>

+      <property>time</property>

+      <value Unit="min" UNIT="MIN" value="60">60</value>

+   </unit>

+   <unit xmlns="" Code="d" CODE="D" isMetric="no" class="iso1000">

+      <name>day</name>

+      <printSymbol>d</printSymbol>

+      <property>time</property>

+      <value Unit="h" UNIT="HR" value="24">24</value>

+   </unit>

+   <unit xmlns="" Code="a_t" CODE="ANN_T" isMetric="no" class="iso1000">

+      <name>tropical year</name>

+      <printSymbol>a<sub>t</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="365.24219">365.24219</value>

+   </unit>

+   <unit xmlns="" Code="a_j" CODE="ANN_J" isMetric="no" class="iso1000">

+      <name>mean Julian year</name>

+      <printSymbol>a<sub>j</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="365.25">365.25</value>

+   </unit>

+   <unit xmlns="" Code="a_g" CODE="ANN_G" isMetric="no" class="iso1000">

+      <name>mean Gregorian year</name>

+      <printSymbol>a<sub>g</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="365.2425">365.2425</value>

+   </unit>

+   <unit xmlns="" Code="a" CODE="ANN" isMetric="no" class="iso1000">

+      <name>year</name>

+      <printSymbol>a</printSymbol>

+      <property>time</property>

+      <value Unit="a_j" UNIT="ANN_J" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="wk" CODE="WK" isMetric="no" class="iso1000">

+      <name>week</name>

+      <printSymbol>wk</printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="7">7</value>

+   </unit>

+   <unit xmlns="" Code="mo_s" CODE="MO_S" isMetric="no" class="iso1000">

+      <name>synodal month</name>

+      <printSymbol>mo<sub>s</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="29.53059">29.53059</value>

+   </unit>

+   <unit xmlns="" Code="mo_j" CODE="MO_J" isMetric="no" class="iso1000">

+      <name>mean Julian month</name>

+      <printSymbol>mo<sub>j</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="a_j/12" UNIT="ANN_J/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="mo_g" CODE="MO_G" isMetric="no" class="iso1000">

+      <name>mean Gregorian month</name>

+      <printSymbol>mo<sub>g</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="a_g/12" UNIT="ANN_G/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="mo" CODE="MO" isMetric="no" class="iso1000">

+      <name>month</name>

+      <printSymbol>mo</printSymbol>

+      <property>time</property>

+      <value Unit="mo_j" UNIT="MO_J" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="t" CODE="TNE" isMetric="yes" class="iso1000">

+      <name>tonne</name>

+      <printSymbol>t</printSymbol>

+      <property>mass</property>

+      <value Unit="kg" UNIT="KG" value="1e3">1 &#215; 10<sup>3</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="bar" CODE="BAR" isMetric="yes" class="iso1000">

+      <name>bar</name>

+      <printSymbol>bar</printSymbol>

+      <property>pressure</property>

+      <value Unit="Pa" UNIT="PAL" value="1e5">1 &#215; 10<sup>5</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="u" CODE="AMU" isMetric="yes" class="iso1000">

+      <name>unified atomic mass unit</name>

+      <printSymbol>u</printSymbol>

+      <property>mass</property>

+      <value Unit="g" UNIT="G" value="1.6605402e-24">1.6605402 &#215; 10<sup>-24</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="eV" CODE="EV" isMetric="yes" class="iso1000">

+      <name>electronvolt</name>

+      <printSymbol>eV</printSymbol>

+      <property>energy</property>

+      <value Unit="[e].V" UNIT="[E].V" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="AU" CODE="ASU" isMetric="no" class="iso1000">

+      <name>astronomic unit</name>

+      <printSymbol>AU</printSymbol>

+      <property>length</property>

+      <value Unit="Mm" UNIT="MAM" value="149597.870691">149597.870691</value>

+   </unit>

+   <unit xmlns="" Code="pc" CODE="PRS" isMetric="yes" class="iso1000">

+      <name>parsec</name>

+      <printSymbol>pc</printSymbol>

+      <property>length</property>

+      <value Unit="m" UNIT="M" value="3.085678e16">3.085678 &#215; 10<sup>16</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[c]" CODE="[C]" isMetric="yes" class="const">

+      <name>velocity of light</name>

+      <printSymbol>

+         <i>c</i>

+      </printSymbol>

+      <property>velocity</property>

+      <value Unit="m/s" UNIT="M/S" value="299792458">299792458</value>

+   </unit>

+   <unit xmlns="" Code="[h]" CODE="[H]" isMetric="yes" class="const">

+      <name>Planck constant</name>

+      <printSymbol>

+         <i>h</i>

+      </printSymbol>

+      <property>action</property>

+      <value Unit="J.s" UNIT="J.S" value="6.6260755e-24">6.6260755 &#215; 10<sup>-24</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[k]" CODE="[K]" isMetric="yes" class="const">

+      <name>Boltzmann constant</name>

+      <printSymbol>

+         <i>k</i>

+      </printSymbol>

+      <property>(unclassified)</property>

+      <value Unit="J/K" UNIT="J/K" value="1.380658e-23">1.380658 &#215; 10<sup>-23</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[eps_0]" CODE="[EPS_0]" isMetric="yes" class="const">

+      <name>permittivity of vacuum</name>

+      <printSymbol>

+         <i>&#949;<sub>

+               <r>0</r>

+            </sub>

+         </i>

+      </printSymbol>

+      <property>electric permittivity</property>

+      <value Unit="F/m" UNIT="F/M" value="8.854187817e-12">8.854187817 &#215; 10<sup>-12</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[mu_0]" CODE="[MU_0]" isMetric="yes" class="const">

+      <name>permeability of vacuum</name>

+      <printSymbol>

+         <i>&#956;<sub>

+               <r>0</r>

+            </sub>

+         </i>

+      </printSymbol>

+      <property>magnetic permeability</property>

+      <value Unit="4.[pi].10*-7.N/A2" UNIT="4.[PI].10*-7.N/A2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[e]" CODE="[E]" isMetric="yes" class="const">

+      <name>elementary charge</name>

+      <printSymbol>

+         <i>e</i>

+      </printSymbol>

+      <property>electric charge</property>

+      <value Unit="C" UNIT="C" value="1.60217733e-19">1.60217733 &#215; 10<sup>-19</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[m_e]" CODE="[M_E]" isMetric="yes" class="const">

+      <name>electron mass</name>

+      <printSymbol>

+         <i>m<sub>

+               <r>e</r>

+            </sub>

+         </i>

+      </printSymbol>

+      <property>mass</property>

+      <value Unit="g" UNIT="g" value="9.1093897e-28">9.1093897 &#215; 10<sup>-28</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[m_p]" CODE="[M_P]" isMetric="yes" class="const">

+      <name>proton mass</name>

+      <printSymbol>

+         <i>m<sub>

+               <r>p</r>

+            </sub>

+         </i>

+      </printSymbol>

+      <property>mass</property>

+      <value Unit="g" UNIT="g" value="1.6726231e-24">1.6726231 &#215; 10<sup>-24</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[G]" CODE="[GC]" isMetric="yes" class="const">

+      <name>Newtonian constant of gravitation</name>

+      <printSymbol>

+         <i>G</i>

+      </printSymbol>

+      <property>(unclassified)</property>

+      <value Unit="m3.kg-1.s-2" UNIT="M3.KG-1.S-2" value="6.67259e-11">6.67259 &#215; 10<sup>-11</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[g]" CODE="[G]" isMetric="yes" class="const">

+      <name>standard acceleration of free fall</name>

+      <printSymbol>

+         <i>g<sub>n</sub>

+         </i>

+      </printSymbol>

+      <property>acceleration</property>

+      <value Unit="m/s2" UNIT="M/S2" value="980665e-5">9.80665</value>

+   </unit>

+   <unit xmlns="" Code="atm" CODE="ATM" isMetric="no" class="const">

+      <name>standard atmosphere</name>

+      <printSymbol>atm</printSymbol>

+      <property>pressure</property>

+      <value Unit="Pa" UNIT="PAL" value="101325">101325</value>

+   </unit>

+   <unit xmlns="" Code="[ly]" CODE="[LY]" isMetric="yes" class="const">

+      <name>light-year</name>

+      <printSymbol>l.y.</printSymbol>

+      <property>length</property>

+      <value Unit="[c].a_j" UNIT="[C].ANN_J" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="gf" CODE="GF" isMetric="yes" class="const">

+      <name>gram-force</name>

+      <printSymbol>gf</printSymbol>

+      <property>force</property>

+      <value Unit="g.[g]" UNIT="G.[G]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[lbf_av]" CODE="[LBF_AV]" isMetric="no" class="const">

+      <name>pound force</name>

+      <printSymbol>lbf</printSymbol>

+      <property>force</property>

+      <value Unit="[lb_av].[g]" UNIT="[LB_AV].[G]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Ky" CODE="KY" isMetric="yes" class="cgs">

+      <name>Kayser</name>

+      <printSymbol>K</printSymbol>

+      <property>lineic number</property>

+      <value Unit="cm-1" UNIT="CM-1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Gal" CODE="GL" isMetric="yes" class="cgs">

+      <name>Gal</name>

+      <printSymbol>Gal</printSymbol>

+      <property>acceleration</property>

+      <value Unit="cm/s2" UNIT="CM/S2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="dyn" CODE="DYN" isMetric="yes" class="cgs">

+      <name>dyne</name>

+      <printSymbol>dyn</printSymbol>

+      <property>force</property>

+      <value Unit="g.cm/s2" UNIT="G.CM/S2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="erg" CODE="ERG" isMetric="yes" class="cgs">

+      <name>erg</name>

+      <printSymbol>erg</printSymbol>

+      <property>energy</property>

+      <value Unit="dyn.cm" UNIT="DYN.CM" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="P" CODE="P" isMetric="yes" class="cgs">

+      <name>Poise</name>

+      <printSymbol>P</printSymbol>

+      <property>dynamic viscosity</property>

+      <value Unit="dyn.s/cm2" UNIT="DYN.S/CM2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Bi" CODE="BI" isMetric="yes" class="cgs">

+      <name>Biot</name>

+      <printSymbol>Bi</printSymbol>

+      <property>electric current</property>

+      <value Unit="A" UNIT="A" value="10">10</value>

+   </unit>

+   <unit xmlns="" Code="St" CODE="ST" isMetric="yes" class="cgs">

+      <name>Stokes</name>

+      <printSymbol>St</printSymbol>

+      <property>kinematic viscosity</property>

+      <value Unit="cm2/s" UNIT="CM2/S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Mx" CODE="MX" isMetric="yes" class="cgs">

+      <name>Maxwell</name>

+      <printSymbol>Mx</printSymbol>

+      <property>flux of magnetic induction</property>

+      <value Unit="Wb" UNIT="WB" value="1e-8">1 &#215; 10<sup>-8</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="G" CODE="GS" isMetric="yes" class="cgs">

+      <name>Gauss</name>

+      <printSymbol>Gs</printSymbol>

+      <property>magnetic flux density</property>

+      <value Unit="T" UNIT="T" value="1e-4">1 &#215; 10<sup>-4</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="Oe" CODE="OE" isMetric="yes" class="cgs">

+      <name>Oersted</name>

+      <printSymbol>Oe</printSymbol>

+      <property>magnetic field intensity</property>

+      <value Unit="/[pi].A/m" UNIT="/[PI].A/M" value="250">250</value>

+   </unit>

+   <unit xmlns="" Code="Gb" CODE="GB" isMetric="yes" class="cgs">

+      <name>Gilbert</name>

+      <printSymbol>Gb</printSymbol>

+      <property>magnetic tension</property>

+      <value Unit="Oe.cm" UNIT="OE.CM" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="sb" CODE="SB" isMetric="yes" class="cgs">

+      <name>stilb</name>

+      <printSymbol>sb</printSymbol>

+      <property>lum. intensity density</property>

+      <value Unit="cd/cm2" UNIT="CD/CM2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Lmb" CODE="LMB" isMetric="yes" class="cgs">

+      <name>Lambert</name>

+      <printSymbol>L</printSymbol>

+      <property>brightness</property>

+      <value Unit="cd/cm2/[pi]" UNIT="CD/CM2/[PI]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="ph" CODE="PHT" isMetric="yes" class="cgs">

+      <name>phot</name>

+      <printSymbol>ph</printSymbol>

+      <property>illuminance</property>

+      <value Unit="lx" UNIT="LX" value="1e-4">1 &#215; 10<sup>-4</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="Ci" CODE="CI" isMetric="yes" class="cgs">

+      <name>Curie</name>

+      <printSymbol>Ci</printSymbol>

+      <property>radioactivity</property>

+      <value Unit="Bq" UNIT="BQ" value="37e9">3.7 &#215; 10<sup>10</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="R" CODE="ROE" isMetric="yes" class="cgs">

+      <name>Roentgen</name>

+      <printSymbol>R</printSymbol>

+      <property>ion dose</property>

+      <value Unit="C/kg" UNIT="C/KG" value="2.58e-4">2.58 &#215; 10<sup>-4</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="RAD" CODE="[RAD]" isMetric="yes" class="cgs">

+      <name>radiation absorbed dose</name>

+      <printSymbol>RAD</printSymbol>

+      <property>energy dose</property>

+      <value Unit="erg/g" UNIT="ERG/G" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="REM" CODE="[REM]" isMetric="yes" class="cgs">

+      <name>radiation equivalent man</name>

+      <printSymbol>REM</printSymbol>

+      <property>dose equivalent</property>

+      <value Unit="RAD" UNIT="[RAD]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[in_i]" CODE="[IN_I]" isMetric="no" class="intcust">

+      <name>inch</name>

+      <printSymbol>in</printSymbol>

+      <property>length</property>

+      <value Unit="cm" UNIT="CM" value="254e-2">2.54</value>

+   </unit>

+   <unit xmlns="" Code="[ft_i]" CODE="[FT_I]" isMetric="no" class="intcust">

+      <name>foot</name>

+      <printSymbol>ft</printSymbol>

+      <property>length</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[yd_i]" CODE="[YD_I]" isMetric="no" class="intcust">

+      <name>yard</name>

+      <printSymbol>yd</printSymbol>

+      <property>length</property>

+      <value Unit="[ft_i]" UNIT="[FT_I]" value="3">3</value>

+   </unit>

+   <unit xmlns="" Code="[mi_i]" CODE="[MI_I]" isMetric="no" class="intcust">

+      <name>statute mile</name>

+      <printSymbol>mi</printSymbol>

+      <property>length</property>

+      <value Unit="[ft_i]" UNIT="[FT_I]" value="5280">5280</value>

+   </unit>

+   <unit xmlns="" Code="[fth_i]" CODE="[FTH_I]" isMetric="no" class="intcust">

+      <name>fathom</name>

+      <printSymbol>fth</printSymbol>

+      <property>depth of water</property>

+      <value Unit="[ft_i]" UNIT="[FT_I]" value="6">6</value>

+   </unit>

+   <unit xmlns="" Code="[nmi_i]" CODE="[NMI_I]" isMetric="no" class="intcust">

+      <name>nautical mile</name>

+      <printSymbol>n.mi</printSymbol>

+      <property>length</property>

+      <value Unit="m" UNIT="M" value="1852">1852</value>

+   </unit>

+   <unit xmlns="" Code="[kn_i]" CODE="[KN_I]" isMetric="no" class="intcust">

+      <name>knot</name>

+      <printSymbol>knot</printSymbol>

+      <property>velocity</property>

+      <value Unit="[nmi_i]/h" UNIT="[NMI_I]/H" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[sin_i]" CODE="[SIN_I]" isMetric="no" class="intcust">

+      <name>square inch</name>

+      <property>area</property>

+      <value Unit="[in_i]2" UNIT="[IN_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[sft_i]" CODE="[SFT_I]" isMetric="no" class="intcust">

+      <name>square foot</name>

+      <property>area</property>

+      <value Unit="[ft_i]2" UNIT="[FT_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[syd_i]" CODE="[SYD_I]" isMetric="no" class="intcust">

+      <name>square yard</name>

+      <property>area</property>

+      <value Unit="[yd_i]2" UNIT="[YD_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cin_i]" CODE="[CIN_I]" isMetric="no" class="intcust">

+      <name>cubic inch</name>

+      <property>volume</property>

+      <value Unit="[in_i]3" UNIT="[IN_I]3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cft_i]" CODE="[CFT_I]" isMetric="no" class="intcust">

+      <name>cubic foot</name>

+      <property>volume</property>

+      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cyd_i]" CODE="[CYD_I]" isMetric="no" class="intcust">

+      <name>cubic yard</name>

+      <printSymbol>cu.yd</printSymbol>

+      <property>volume</property>

+      <value Unit="[yd_i]3" UNIT="[YD_I]3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[bf_i]" CODE="[BF_I]" isMetric="no" class="intcust">

+      <name>board foot</name>

+      <property>volume</property>

+      <value Unit="[in_i]3" UNIT="[IN_I]3" value="144">144</value>

+   </unit>

+   <unit xmlns="" Code="[cr_i]" CODE="[CR_I]" isMetric="no" class="intcust">

+      <name>cord</name>

+      <property>volume</property>

+      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="128">128</value>

+   </unit>

+   <unit xmlns="" Code="[mil_i]" CODE="[MIL_I]" isMetric="no" class="intcust">

+      <name>mil</name>

+      <printSymbol>mil</printSymbol>

+      <property>length</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="1e-3">1 &#215; 10<sup>-3</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[cml_i]" CODE="[CML_I]" isMetric="no" class="intcust">

+      <name>circular mil</name>

+      <printSymbol>circ.mil</printSymbol>

+      <property>area</property>

+      <value Unit="[pi]/4.[mil_i]2" UNIT="[PI]/4.[MIL_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hd_i]" CODE="[HD_I]" isMetric="no" class="intcust">

+      <name>hand</name>

+      <printSymbol>hd</printSymbol>

+      <property>height of horses</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[ft_us]" CODE="[FT_US]" isMetric="no" class="us-lengths">

+      <name>foot</name>

+      <printSymbol>ft<sub>us</sub>

+      </printSymbol>

+      <property>length</property>

+      <value Unit="m/3937" UNIT="M/3937" value="1200">1200</value>

+   </unit>

+   <unit xmlns="" Code="[yd_us]" CODE="[YD_US]" isMetric="no" class="us-lengths">

+      <name>yard</name>

+      <property>length</property>

+      <value Unit="[ft_us]" UNIT="[FT_US]" value="3">3</value>

+   </unit>

+   <unit xmlns="" Code="[in_us]" CODE="[IN_US]" isMetric="no" class="us-lengths">

+      <name>inch</name>

+      <property>length</property>

+      <value Unit="[ft_us]/12" UNIT="[FT_US]/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[rd_us]" CODE="[RD_US]" isMetric="no" class="us-lengths">

+      <name>rod</name>

+      <property>length</property>

+      <value Unit="[ft_us]" UNIT="[FT_US]" value="16.5">16.5</value>

+   </unit>

+   <unit xmlns="" Code="[ch_us]" CODE="[CH_US]" isMetric="no" class="us-lengths">

+      <name>Gunter's chain</name>

+      <name>Surveyor's chain</name>

+      <property>length</property>

+      <value Unit="[rd_us]" UNIT="[RD_US]" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[lk_us]" CODE="[LK_US]" isMetric="no" class="us-lengths">

+      <name>link for Gunter's chain</name>

+      <property>length</property>

+      <value Unit="[ch_us]/100" UNIT="[CH_US]/100" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[rch_us]" CODE="[RCH_US]" isMetric="no" class="us-lengths">

+      <name>Ramden's chain</name>

+      <name>Engineer's chain</name>

+      <property>length</property>

+      <value Unit="[ft_us]" UNIT="[FT_US]" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="[rlk_us]" CODE="[RLK_US]" isMetric="no" class="us-lengths">

+      <name>link for Ramden's chain</name>

+      <property>length</property>

+      <value Unit="[rch_us]/100" UNIT="[RCH_US]/100" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[fth_us]" CODE="[FTH_US]" isMetric="no" class="us-lengths">

+      <name>fathom</name>

+      <property>length</property>

+      <value Unit="[ft_us]" UNIT="[FT_US]" value="6">6</value>

+   </unit>

+   <unit xmlns="" Code="[fur_us]" CODE="[FUR_US]" isMetric="no" class="us-lengths">

+      <name>furlong</name>

+      <property>length</property>

+      <value Unit="[rd_us]" UNIT="[RD_US]" value="40">40</value>

+   </unit>

+   <unit xmlns="" Code="[mi_us]" CODE="[MI_US]" isMetric="no" class="us-lengths">

+      <name>mile</name>

+      <property>length</property>

+      <value Unit="[fur_us]" UNIT="[FUR_US]" value="8">8</value>

+   </unit>

+   <unit xmlns="" Code="[acr_us]" CODE="[ACR_US]" isMetric="no" class="us-lengths">

+      <name>acre</name>

+      <property>area</property>

+      <value Unit="[rd_us]2" UNIT="[RD_US]2" value="160">160</value>

+   </unit>

+   <unit xmlns="" Code="[srd_us]" CODE="[SRD_US]" isMetric="no" class="us-lengths">

+      <name>square rod</name>

+      <property>area</property>

+      <value Unit="[rd_us]2" UNIT="[RD_US]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[smi_us]" CODE="[SMI_US]" isMetric="no" class="us-lengths">

+      <name>square mile</name>

+      <property>area</property>

+      <value Unit="[mi_us]2" UNIT="[MI_US]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[sct]" CODE="[SCT]" isMetric="no" class="us-lengths">

+      <name>section</name>

+      <property>area</property>

+      <value Unit="[mi_us]2" UNIT="[MI_US]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[twp]" CODE="[TWP]" isMetric="no" class="us-lengths">

+      <name>township</name>

+      <property>area</property>

+      <value Unit="[sct]" UNIT="[SCT]" value="36">36</value>

+   </unit>

+   <unit xmlns="" Code="[mil_us]" CODE="[MIL_US]" isMetric="no" class="us-lengths">

+      <name>mil</name>

+      <property>length</property>

+      <value Unit="[in_us]" UNIT="[IN_US]" value="1e-3">1 &#215; 10<sup>-3</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[in_br]" CODE="[IN_BR]" isMetric="no" class="brit-length">

+      <name>inch</name>

+      <property>length</property>

+      <value Unit="cm" UNIT="CM" value="2.539998">2.539998</value>

+   </unit>

+   <unit xmlns="" Code="[ft_br]" CODE="[FT_BR]" isMetric="no" class="brit-length">

+      <name>foot</name>

+      <property>length</property>

+      <value Unit="[in_br]" UNIT="[IN_BR]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[rd_br]" CODE="[RD_BR]" isMetric="no" class="brit-length">

+      <name>rod</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="16.5">16.5</value>

+   </unit>

+   <unit xmlns="" Code="[ch_br]" CODE="[CH_BR]" isMetric="no" class="brit-length">

+      <name>Gunter's chain</name>

+      <property>length</property>

+      <value Unit="[rd_br]" UNIT="[RD_BR]" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[lk_br]" CODE="[LK_BR]" isMetric="no" class="brit-length">

+      <name>link for Gunter's chain</name>

+      <property>length</property>

+      <value Unit="[ch_br]/100" UNIT="[CH_BR]/100" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[fth_br]" CODE="[FTH_BR]" isMetric="no" class="brit-length">

+      <name>fathom</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="6">6</value>

+   </unit>

+   <unit xmlns="" Code="[pc_br]" CODE="[PC_BR]" isMetric="no" class="brit-length">

+      <name>pace</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="2.5">2.5</value>

+   </unit>

+   <unit xmlns="" Code="[yd_br]" CODE="[YD_BR]" isMetric="no" class="brit-length">

+      <name>yard</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="3">3</value>

+   </unit>

+   <unit xmlns="" Code="[mi_br]" CODE="[MI_BR]" isMetric="no" class="brit-length">

+      <name>mile</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="5280">5280</value>

+   </unit>

+   <unit xmlns="" Code="[nmi_br]" CODE="[NMI_BR]" isMetric="no" class="brit-length">

+      <name>nautical mile</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="6080">6080</value>

+   </unit>

+   <unit xmlns="" Code="[kn_br]" CODE="[KN_BR]" isMetric="no" class="brit-length">

+      <name>knot</name>

+      <property>velocity</property>

+      <value Unit="[nmi_br]/h" UNIT="[NMI_BR]/H" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[acr_br]" CODE="[ACR_BR]" isMetric="no" class="brit-length">

+      <name>acre</name>

+      <property>area</property>

+      <value Unit="[yd_br]2" UNIT="[YD_BR]2" value="4840">4840</value>

+   </unit>

+   <unit xmlns="" Code="[gal_us]" CODE="[GAL_US]" isMetric="no" class="us-volumes">

+      <name>Queen&#160;Anne's wine gallon</name>

+      <property>fluid volume</property>

+      <value Unit="[in_i]3" UNIT="[IN_I]3" value="231">231</value>

+   </unit>

+   <unit xmlns="" Code="[bbl_us]" CODE="[BBL_US]" isMetric="no" class="us-volumes">

+      <name>barrel</name>

+      <property>fluid volume</property>

+      <value Unit="[gal_us]" UNIT="[GAL_US]" value="42">42</value>

+   </unit>

+   <unit xmlns="" Code="[qt_us]" CODE="[QT_US]" isMetric="no" class="us-volumes">

+      <name>quart</name>

+      <property>fluid volume</property>

+      <value Unit="[gal_us]/4" UNIT="[GAL_US]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pt_us]" CODE="[PT_US]" isMetric="no" class="us-volumes">

+      <name>pint</name>

+      <property>fluid volume</property>

+      <value Unit="[qt_us]/2" UNIT="[QT_US]/2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[gil_us]" CODE="[GIL_US]" isMetric="no" class="us-volumes">

+      <name>gill</name>

+      <property>fluid volume</property>

+      <value Unit="[pt_us]/4" UNIT="[PT_US]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[foz_us]" CODE="[FOZ_US]" isMetric="no" class="us-volumes">

+      <name>fluid ounce</name>

+      <printSymbol>oz fl</printSymbol>

+      <property>fluid volume</property>

+      <value Unit="[gil_us]/4" UNIT="[GIL_US]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[fdr_us]" CODE="[FDR_US]" isMetric="no" class="us-volumes">

+      <name>fluid dram</name>

+      <property>fluid volume</property>

+      <value Unit="[foz_us]/8" UNIT="[FOZ_US]/8" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[min_us]" CODE="[MIN_US]" isMetric="no" class="us-volumes">

+      <name>minim</name>

+      <property>fluid volume</property>

+      <value Unit="[fdr_us]/60" UNIT="[FDR_US]/60" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[crd_us]" CODE="[CRD_US]" isMetric="no" class="us-volumes">

+      <name>cord</name>

+      <property>fluid volume</property>

+      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="128">128</value>

+   </unit>

+   <unit xmlns="" Code="[bu_us]" CODE="[BU_US]" isMetric="no" class="us-volumes">

+      <name>bushel</name>

+      <property>dry volume</property>

+      <value Unit="[in_i]3" UNIT="[IN_I]3" value="2150.42">2150.42</value>

+   </unit>

+   <unit xmlns="" Code="[gal_wi]" CODE="[GAL_WI]" isMetric="no" class="us-volumes">

+      <name>historical winchester gallon</name>

+      <property>dry volume</property>

+      <value Unit="[bu_us]/8" UNIT="[BU_US]/8" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pk_us]" CODE="[PK_US]" isMetric="no" class="us-volumes">

+      <name>peck</name>

+      <property>dry volume</property>

+      <value Unit="[bu_us]/4" UNIT="[BU_US]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[dqt_us]" CODE="[DQT_US]" isMetric="no" class="us-volumes">

+      <name>dry quart</name>

+      <property>dry volume</property>

+      <value Unit="[pk_us]/8" UNIT="[PK_US]/8" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[dpt_us]" CODE="[DPT_US]" isMetric="no" class="us-volumes">

+      <name>dry pint</name>

+      <property>dry volume</property>

+      <value Unit="[dqt_us]/2" UNIT="[DQT_US]/2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[tbs_us]" CODE="[TBS_US]" isMetric="no" class="us-volumes">

+      <name>tablespoon</name>

+      <property>volume</property>

+      <value Unit="[foz_us]/2" UNIT="[FOZ_US]/2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[tsp_us]" CODE="[TSP_US]" isMetric="no" class="us-volumes">

+      <name>teaspoon</name>

+      <property>volume</property>

+      <value Unit="[tbs_us]/3" UNIT="[TBS_US]/3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cup_us]" CODE="[CUP_US]" isMetric="no" class="us-volumes">

+      <name>cup</name>

+      <property>volume</property>

+      <value Unit="[tbs_us]" UNIT="[TBS_US]" value="16">16</value>

+   </unit>

+   <unit xmlns="" Code="[foz_m]" CODE="[FOZ_M]" isMetric="no" class="us-volumes">

+      <name>metric fluid ounce</name>

+      <printSymbol>oz fl</printSymbol>

+      <property>fluid volume</property>

+      <value Unit="mL" UNIT="ML" value="30">30</value>

+   </unit>

+   <unit xmlns="" Code="[cup_m]" CODE="[CUP_M]" isMetric="no" class="us-volumes">

+      <name>metric cup</name>

+      <property>volume</property>

+      <value Unit="mL" UNIT="ML" value="240">240</value>

+   </unit>

+   <unit xmlns="" Code="[tsp_m]" CODE="[TSP_M]" isMetric="no" class="us-volumes">

+      <name>metric teaspoon</name>

+      <property>volume</property>

+      <value Unit="mL" UNIT="mL" value="5">5</value>

+   </unit>

+   <unit xmlns="" Code="[tbs_m]" CODE="[TBS_M]" isMetric="no" class="us-volumes">

+      <name>metric tablespoon</name>

+      <property>volume</property>

+      <value Unit="mL" UNIT="mL" value="15">15</value>

+   </unit>

+   <unit xmlns="" Code="[gal_br]" CODE="[GAL_BR]" isMetric="no" class="brit-volumes">

+      <name>gallon</name>

+      <property>volume</property>

+      <value Unit="l" UNIT="L" value="4.54609">4.54609</value>

+   </unit>

+   <unit xmlns="" Code="[pk_br]" CODE="[PK_BR]" isMetric="no" class="brit-volumes">

+      <name>peck</name>

+      <property>volume</property>

+      <value Unit="[gal_br]" UNIT="[GAL_BR]" value="2">2</value>

+   </unit>

+   <unit xmlns="" Code="[bu_br]" CODE="[BU_BR]" isMetric="no" class="brit-volumes">

+      <name>bushel</name>

+      <property>volume</property>

+      <value Unit="[pk_br]" UNIT="[PK_BR]" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[qt_br]" CODE="[QT_BR]" isMetric="no" class="brit-volumes">

+      <name>quart</name>

+      <property>volume</property>

+      <value Unit="[gal_br]/4" UNIT="[GAL_BR]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pt_br]" CODE="[PT_BR]" isMetric="no" class="brit-volumes">

+      <name>pint</name>

+      <property>volume</property>

+      <value Unit="[qt_br]/2" UNIT="[QT_BR]/2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[gil_br]" CODE="[GIL_BR]" isMetric="no" class="brit-volumes">

+      <name>gill</name>

+      <property>volume</property>

+      <value Unit="[pt_br]/4" UNIT="[PT_BR]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[foz_br]" CODE="[FOZ_BR]" isMetric="no" class="brit-volumes">

+      <name>fluid ounce</name>

+      <property>volume</property>

+      <value Unit="[gil_br]/5" UNIT="[GIL_BR]/5" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[fdr_br]" CODE="[FDR_BR]" isMetric="no" class="brit-volumes">

+      <name>fluid dram</name>

+      <property>volume</property>

+      <value Unit="[foz_br]/8" UNIT="[FOZ_BR]/8" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[min_br]" CODE="[MIN_BR]" isMetric="no" class="brit-volumes">

+      <name>minim</name>

+      <property>volume</property>

+      <value Unit="[fdr_br]/60" UNIT="[FDR_BR]/60" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[gr]" CODE="[GR]" isMetric="no" class="avoirdupois">

+      <name>grain</name>

+      <property>mass</property>

+      <value Unit="mg" UNIT="MG" value="64.79891">64.79891</value>

+   </unit>

+   <unit xmlns="" Code="[lb_av]" CODE="[LB_AV]" isMetric="no" class="avoirdupois">

+      <name>pound</name>

+      <printSymbol>lb</printSymbol>

+      <property>mass</property>

+      <value Unit="[gr]" UNIT="[GR]" value="7000">7000</value>

+   </unit>

+   <unit xmlns="" Code="[oz_av]" CODE="[OZ_AV]" isMetric="no" class="avoirdupois">

+      <name>ounce</name>

+      <printSymbol>oz</printSymbol>

+      <property>mass</property>

+      <value Unit="[lb_av]/16" UNIT="[LB_AV]/16" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[dr_av]" CODE="[DR_AV]" isMetric="no" class="avoirdupois">

+      <name>dram</name>

+      <property>mass</property>

+      <value Unit="[oz_av]/16" UNIT="[OZ_AV]/16" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[scwt_av]" CODE="[SCWT_AV]" isMetric="no" class="avoirdupois">

+      <name>short hundredweight</name>

+      <name>U.S. hundredweight</name>

+      <property>mass</property>

+      <value Unit="[lb_av]" UNIT="[LB_AV]" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="[lcwt_av]" CODE="[LCWT_AV]" isMetric="no" class="avoirdupois">

+      <name>long hunderdweight</name>

+      <name>British hundredweight</name>

+      <property>mass</property>

+      <value Unit="[lb_av]" UNIT="[LB_AV]" value="112">112</value>

+   </unit>

+   <unit xmlns="" Code="[ston_av]" CODE="[STON_AV]" isMetric="no" class="avoirdupois">

+      <name>short ton</name>

+      <name>U.S. ton</name>

+      <property>mass</property>

+      <value Unit="[scwt_av]" UNIT="[SCWT_AV]" value="20">20</value>

+   </unit>

+   <unit xmlns="" Code="[lton_av]" CODE="[LTON_AV]" isMetric="no" class="avoirdupois">

+      <name>long ton</name>

+      <name>British ton</name>

+      <property>mass</property>

+      <value Unit="[lcwt_av]" UNIT="[LCWT_AV]" value="20">20</value>

+   </unit>

+   <unit xmlns="" Code="[stone_av]" CODE="[STONE_AV]" isMetric="no" class="avoirdupois">

+      <name>stone</name>

+      <name>British stone</name>

+      <property>mass</property>

+      <value Unit="[lb_av]" UNIT="[LB_AV]" value="14">14</value>

+   </unit>

+   <unit xmlns="" Code="[pwt_tr]" CODE="[PWT_TR]" isMetric="no" class="troy">

+      <name>pennyweight</name>

+      <property>mass</property>

+      <value Unit="[gr]" UNIT="[GR]" value="24">24</value>

+   </unit>

+   <unit xmlns="" Code="[oz_tr]" CODE="[OZ_TR]" isMetric="no" class="troy">

+      <name>ounce</name>

+      <property>mass</property>

+      <value Unit="[pwt_tr]" UNIT="[PWT_TR]" value="20">20</value>

+   </unit>

+   <unit xmlns="" Code="[lb_tr]" CODE="[LB_TR]" isMetric="no" class="troy">

+      <name>pound</name>

+      <property>mass</property>

+      <value Unit="[oz_tr]" UNIT="[OZ_TR]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[sc_ap]" CODE="[SC_AP]" isMetric="no" class="apoth">

+      <name>scruple</name>

+      <property>mass</property>

+      <value Unit="[gr]" UNIT="[GR]" value="20">20</value>

+   </unit>

+   <unit xmlns="" Code="[dr_ap]" CODE="[DR_AP]" isMetric="no" class="apoth">

+      <name>dram</name>

+      <name>drachm</name>

+      <property>mass</property>

+      <value Unit="[sc_ap]" UNIT="[SC_AP]" value="3">3</value>

+   </unit>

+   <unit xmlns="" Code="[oz_ap]" CODE="[OZ_AP]" isMetric="no" class="apoth">

+      <name>ounce</name>

+      <property>mass</property>

+      <value Unit="[dr_ap]" UNIT="[DR_AP]" value="8">8</value>

+   </unit>

+   <unit xmlns="" Code="[lb_ap]" CODE="[LB_AP]" isMetric="no" class="apoth">

+      <name>pound</name>

+      <property>mass</property>

+      <value Unit="[oz_ap]" UNIT="[OZ_AP]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[oz_m]" CODE="[OZ_M]" isMetric="no" class="apoth">

+      <name>metric ounce</name>

+      <property>mass</property>

+      <value Unit="g" UNIT="g" value="28">28</value>

+   </unit>

+   <unit xmlns="" Code="[lne]" CODE="[LNE]" isMetric="no" class="typeset">

+      <name>line</name>

+      <property>length</property>

+      <value Unit="[in_i]/12" UNIT="[IN_I]/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pnt]" CODE="[PNT]" isMetric="no" class="typeset">

+      <name>point</name>

+      <property>length</property>

+      <value Unit="[lne]/6" UNIT="[LNE]/6" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pca]" CODE="[PCA]" isMetric="no" class="typeset">

+      <name>pica</name>

+      <property>length</property>

+      <value Unit="[pnt]" UNIT="[PNT]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[pnt_pr]" CODE="[PNT_PR]" isMetric="no" class="typeset">

+      <name>Printer's point</name>

+      <property>length</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="0.013837">0.013837</value>

+   </unit>

+   <unit xmlns="" Code="[pca_pr]" CODE="[PCA_PR]" isMetric="no" class="typeset">

+      <name>Printer's pica</name>

+      <property>length</property>

+      <value Unit="[pnt_pr]" UNIT="[PNT_PR]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[pied]" CODE="[PIED]" isMetric="no" class="typeset">

+      <name>pied</name>

+      <name>French foot</name>

+      <property>length</property>

+      <value Unit="cm" UNIT="CM" value="32.48">32.48</value>

+   </unit>

+   <unit xmlns="" Code="[pouce]" CODE="[POUCE]" isMetric="no" class="typeset">

+      <name>pouce</name>

+      <name>French inch</name>

+      <property>length</property>

+      <value Unit="[pied]/12" UNIT="[PIED]/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ligne]" CODE="[LIGNE]" isMetric="no" class="typeset">

+      <name>ligne</name>

+      <name>French line</name>

+      <property>length</property>

+      <value Unit="[pouce]/12" UNIT="[POUCE]/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[didot]" CODE="[DIDOT]" isMetric="no" class="typeset">

+      <name>didot</name>

+      <name>Didot's point</name>

+      <property>length</property>

+      <value Unit="[ligne]/6" UNIT="[LIGNE]/6" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cicero]" CODE="[CICERO]" isMetric="no" class="typeset">

+      <name>cicero</name>

+      <name>Didot's pica</name>

+      <property>length</property>

+      <value Unit="[didot]" UNIT="[DIDOT]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[degF]" CODE="[DEGF]" isMetric="no" isSpecial="yes" class="heat">

+      <name>degree Fahrenheit</name>

+      <printSymbol>&#176;F</printSymbol>

+      <property>temperature</property>

+      <value Unit="degf(5 K/9)" UNIT="DEGF(5 K/9)">

+         <function name="degF" value="5" Unit="K/9"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[degR]" CODE="[degR]" isMetric="no" class="heat">

+      <name>degree Rankine</name>

+      <printSymbol>&#176;R</printSymbol>

+      <property>temperature</property>

+      <value value="5" Unit="K/9" UNIT="K/9">5</value>

+   </unit>

+   <unit xmlns="" Code="cal_[15]" CODE="CAL_[15]" isMetric="yes" class="heat">

+      <name>calorie at 15&#160;&#176;C</name>

+      <printSymbol>cal<sub>15&#176;C</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.18580">4.18580</value>

+   </unit>

+   <unit xmlns="" Code="cal_[20]" CODE="CAL_[20]" isMetric="yes" class="heat">

+      <name>calorie at 20&#160;&#176;C</name>

+      <printSymbol>cal<sub>20&#176;C</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.18190">4.18190</value>

+   </unit>

+   <unit xmlns="" Code="cal_m" CODE="CAL_M" isMetric="yes" class="heat">

+      <name>mean calorie</name>

+      <printSymbol>cal<sub>m</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.19002">4.19002</value>

+   </unit>

+   <unit xmlns="" Code="cal_IT" CODE="CAL_IT" isMetric="yes" class="heat">

+      <name>international table calorie</name>

+      <printSymbol>cal<sub>IT</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.1868">4.1868</value>

+   </unit>

+   <unit xmlns="" Code="cal_th" CODE="CAL_TH" isMetric="yes" class="heat">

+      <name>thermochemical calorie</name>

+      <printSymbol>cal<sub>th</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.184">4.184</value>

+   </unit>

+   <unit xmlns="" Code="cal" CODE="CAL" isMetric="yes" class="heat">

+      <name>calorie</name>

+      <printSymbol>cal</printSymbol>

+      <property>energy</property>

+      <value Unit="cal_th" UNIT="CAL_TH" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Cal]" CODE="[CAL]" isMetric="no" class="heat">

+      <name>nutrition label Calories</name>

+      <printSymbol>Cal</printSymbol>

+      <property>energy</property>

+      <value Unit="kcal_th" UNIT="KCAL_TH" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_39]" CODE="[BTU_39]" isMetric="no" class="heat">

+      <name>British thermal unit at 39&#160;&#176;F</name>

+      <printSymbol>Btu<sub>39&#176;F</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05967">1.05967</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_59]" CODE="[BTU_59]" isMetric="no" class="heat">

+      <name>British thermal unit at 59&#160;&#176;F</name>

+      <printSymbol>Btu<sub>59&#176;F</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05480">1.05480</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_60]" CODE="[BTU_60]" isMetric="no" class="heat">

+      <name>British thermal unit at 60&#160;&#176;F</name>

+      <printSymbol>Btu<sub>60&#176;F</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05468">1.05468</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_m]" CODE="[BTU_M]" isMetric="no" class="heat">

+      <name>mean British thermal unit</name>

+      <printSymbol>Btu<sub>m</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05587">1.05587</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_IT]" CODE="[BTU_IT]" isMetric="no" class="heat">

+      <name>international table British thermal unit</name>

+      <printSymbol>Btu<sub>IT</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05505585262">1.05505585262</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_th]" CODE="[BTU_TH]" isMetric="no" class="heat">

+      <name>thermochemical British thermal unit</name>

+      <printSymbol>Btu<sub>th</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.054350">1.054350</value>

+   </unit>

+   <unit xmlns="" Code="[Btu]" CODE="[BTU]" isMetric="no" class="heat">

+      <name>British thermal unit</name>

+      <printSymbol>btu</printSymbol>

+      <property>energy</property>

+      <value Unit="[Btu_th]" UNIT="[BTU_TH]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[HP]" CODE="[HP]" isMetric="no" class="heat">

+      <name>horsepower</name>

+      <property>power</property>

+      <value Unit="[ft_i].[lbf_av]/s" UNIT="[FT_I].[LBF_AV]/S" value="550">550</value>

+   </unit>

+   <unit xmlns="" Code="tex" CODE="TEX" isMetric="yes" class="heat">

+      <name>tex</name>

+      <printSymbol>tex</printSymbol>

+      <property>linear mass density (of textile thread)</property>

+      <value value="1" Unit="g/km" UNIT="G/KM">1</value>

+   </unit>

+   <unit xmlns="" Code="[den]" CODE="[DEN]" isMetric="no" class="heat">

+      <name>Denier</name>

+      <printSymbol>den</printSymbol>

+      <property>linear mass density (of textile thread)</property>

+      <value value="1" Unit="g/9/km" UNIT="G/9/KM">1</value>

+   </unit>

+   <unit xmlns="" Code="m[H2O]" CODE="M[H2O]" isMetric="yes" class="clinical">

+      <name>meter of water column</name>

+      <printSymbol>m&#160;H<sub>

+            <r>2</r>

+         </sub>O</printSymbol>

+      <property>pressure</property>

+      <value Unit="kPa" UNIT="KPAL" value="980665e-5">9.80665</value>

+   </unit>

+   <unit xmlns="" Code="m[Hg]" CODE="M[HG]" isMetric="yes" class="clinical">

+      <name>meter of mercury column</name>

+      <printSymbol>m&#160;Hg</printSymbol>

+      <property>pressure</property>

+      <value Unit="kPa" UNIT="KPAL" value="133.3220">133.3220</value>

+   </unit>

+   <unit xmlns="" Code="[in_i'H2O]" CODE="[IN_I'H2O]" isMetric="no" class="clinical">

+      <name>inch of water column</name>

+      <printSymbol>in&#160;H<sub>

+            <r>2</r>

+         </sub>O</printSymbol>

+      <property>pressure</property>

+      <value Unit="m[H2O].[in_i]/m" UNIT="M[H2O].[IN_I]/M" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[in_i'Hg]" CODE="[IN_I'HG]" isMetric="no" class="clinical">

+      <name>inch of mercury column</name>

+      <printSymbol>in&#160;Hg</printSymbol>

+      <property>pressure</property>

+      <value Unit="m[Hg].[in_i]/m" UNIT="M[HG].[IN_I]/M" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[PRU]" CODE="[PRU]" isMetric="no" class="clinical">

+      <name>peripheral vascular resistance unit</name>

+      <printSymbol>P.R.U.</printSymbol>

+      <property>fluid resistance</property>

+      <value Unit="mm[Hg].s/ml" UNIT="MM[HG].S/ML" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[wood'U]" CODE="[WOOD'U]" isMetric="no" class="clinical">

+      <name>Wood unit</name>

+      <printSymbol>Wood U.</printSymbol>

+      <property>fluid resistance</property>

+      <value Unit="mm[Hg].min/L" UNIT="MM[HG].MIN/L" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[diop]" CODE="[DIOP]" isMetric="no" class="clinical">

+      <name>diopter</name>

+      <printSymbol>dpt</printSymbol>

+      <property>refraction of a lens</property>

+      <value Unit="/m" UNIT="/M" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[p'diop]" CODE="[P'DIOP]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>prism diopter</name>

+      <printSymbol>PD</printSymbol>

+      <property>refraction of a prism</property>

+      <value Unit="100tan(1 rad)" UNIT="100TAN(1 RAD)">

+         <function name="tanTimes100" value="1" Unit="deg"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="%[slope]" CODE="%[SLOPE]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>percent of slope</name>

+      <printSymbol>%</printSymbol>

+      <property>slope</property>

+      <value Unit="100tan(1 rad)" UNIT="100TAN(1 RAD)">

+         <function name="100tan" value="1" Unit="deg"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[mesh_i]" CODE="[MESH_I]" isMetric="no" class="clinical">

+      <name>mesh</name>

+      <property>lineic number</property>

+      <value Unit="/[in_i]" UNIT="/[IN_I]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Ch]" CODE="[CH]" isMetric="no" class="clinical">

+      <name>Charri&#232;re</name>

+      <name>french</name>

+      <printSymbol>Ch</printSymbol>

+      <property>gauge of catheters</property>

+      <value Unit="mm/3" UNIT="MM/3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[drp]" CODE="[DRP]" isMetric="no" class="clinical">

+      <name>drop</name>

+      <printSymbol>drp</printSymbol>

+      <property>volume</property>

+      <value Unit="ml/20" UNIT="ML/20" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hnsf'U]" CODE="[HNSF'U]" isMetric="no" class="clinical">

+      <name>Hounsfield unit</name>

+      <printSymbol>HF</printSymbol>

+      <property>x-ray attenuation</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[MET]" CODE="[MET]" isMetric="no" class="clinical">

+      <name>metabolic equivalent</name>

+      <printSymbol>MET</printSymbol>

+      <property>metabolic cost of physical activity</property>

+      <value Unit="mL/min/kg" UNIT="ML/MIN/KG" value="3.5">3.5</value>

+   </unit>

+   <unit xmlns="" Code="[hp'_X]" CODE="[HP'_X]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>homeopathic potency of decimal series (retired)</name>

+      <printSymbol>X</printSymbol>

+      <property>homeopathic potency (retired)</property>

+      <value Unit="hpX(1 1)" UNIT="HPX(1 1)">

+         <function name="hpX" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[hp'_C]" CODE="[HP'_C]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>homeopathic potency of centesimal series (retired)</name>

+      <printSymbol>C</printSymbol>

+      <property>homeopathic potency (retired)</property>

+      <value Unit="hpC(1 1)" UNIT="HPC(1 1)">

+         <function name="hpC" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[hp'_M]" CODE="[HP'_M]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>homeopathic potency of millesimal series (retired)</name>

+      <printSymbol>M</printSymbol>

+      <property>homeopathic potency (retired)</property>

+      <value Unit="hpM(1 1)" UNIT="HPM(1 1)">

+         <function name="hpM" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[hp'_Q]" CODE="[HP'_Q]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>homeopathic potency of quintamillesimal series (retired)</name>

+      <printSymbol>Q</printSymbol>

+      <property>homeopathic potency (retired)</property>

+      <value Unit="hpQ(1 1)" UNIT="HPQ(1 1)">

+         <function name="hpQ" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[hp_X]" CODE="[HP_X]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of decimal hahnemannian series</name>

+      <printSymbol>X</printSymbol>

+      <property>homeopathic potency (Hahnemann)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hp_C]" CODE="[HP_C]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of centesimal hahnemannian series</name>

+      <printSymbol>C</printSymbol>

+      <property>homeopathic potency (Hahnemann)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hp_M]" CODE="[HP_M]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of millesimal hahnemannian series</name>

+      <printSymbol>M</printSymbol>

+      <property>homeopathic potency (Hahnemann)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hp_Q]" CODE="[HP_Q]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of quintamillesimal hahnemannian series</name>

+      <printSymbol>Q</printSymbol>

+      <property>homeopathic potency (Hahnemann)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[kp_X]" CODE="[KP_X]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of decimal korsakovian series</name>

+      <printSymbol>X</printSymbol>

+      <property>homeopathic potency (Korsakov)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[kp_C]" CODE="[KP_C]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of centesimal korsakovian series</name>

+      <printSymbol>C</printSymbol>

+      <property>homeopathic potency (Korsakov)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[kp_M]" CODE="[KP_M]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of millesimal korsakovian series</name>

+      <printSymbol>M</printSymbol>

+      <property>homeopathic potency (Korsakov)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[kp_Q]" CODE="[KP_Q]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of quintamillesimal korsakovian series</name>

+      <printSymbol>Q</printSymbol>

+      <property>homeopathic potency (Korsakov)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="eq" CODE="EQ" isMetric="yes" class="chemical">

+      <name>equivalents</name>

+      <printSymbol>eq</printSymbol>

+      <property>amount of substance</property>

+      <value Unit="mol" UNIT="MOL" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="osm" CODE="OSM" isMetric="yes" class="chemical">

+      <name>osmole</name>

+      <printSymbol>osm</printSymbol>

+      <property>amount of substance (dissolved particles)</property>

+      <value Unit="mol" UNIT="MOL" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pH]" CODE="[PH]" isMetric="no" isSpecial="yes" class="chemical">

+      <name>pH</name>

+      <printSymbol>pH</printSymbol>

+      <property>acidity</property>

+      <value Unit="pH(1 mol/l)" UNIT="PH(1 MOL/L)">

+         <function name="pH" value="1" Unit="mol/l"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="g%" CODE="G%" isMetric="yes" class="chemical">

+      <name>gram percent</name>

+      <printSymbol>g%</printSymbol>

+      <property>mass concentration</property>

+      <value Unit="g/dl" UNIT="G/DL" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[S]" CODE="[S]" isMetric="no" class="chemical">

+      <name>Svedberg unit</name>

+      <printSymbol>S</printSymbol>

+      <property>sedimentation coefficient</property>

+      <value Unit="10*-13.s" UNIT="10*-13.S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[HPF]" CODE="[HPF]" isMetric="no" class="chemical">

+      <name>high power field</name>

+      <printSymbol>HPF</printSymbol>

+      <property>view area in microscope</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[LPF]" CODE="[LPF]" isMetric="no" class="chemical">

+      <name>low power field</name>

+      <printSymbol>LPF</printSymbol>

+      <property>view area in microscope</property>

+      <value Unit="1" UNIT="1" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="kat" CODE="KAT" isMetric="yes" class="chemical">

+      <name>katal</name>

+      <printSymbol>kat</printSymbol>

+      <property>catalytic activity</property>

+      <value Unit="mol/s" UNIT="MOL/S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="U" CODE="U" isMetric="yes" class="chemical">

+      <name>Unit</name>

+      <printSymbol>U</printSymbol>

+      <property>catalytic activity</property>

+      <value Unit="umol/min" UNIT="UMOL/MIN" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[iU]" CODE="[IU]" isMetric="yes" isArbitrary="yes"

+         class="chemical">

+      <name>international unit</name>

+      <printSymbol>IU</printSymbol>

+      <property>arbitrary</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[IU]" CODE="[IU]" isMetric="yes" isArbitrary="yes"

+         class="chemical">

+      <name>international unit</name>

+      <printSymbol>i.U.</printSymbol>

+      <property>arbitrary</property>

+      <value Unit="[iU]" UNIT="[IU]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[arb'U]" CODE="[ARB'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>arbitary unit</name>

+      <printSymbol>arb. U</printSymbol>

+      <property>arbitrary</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[USP'U]" CODE="[USP'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>United States Pharmacopeia unit</name>

+      <printSymbol>U.S.P.</printSymbol>

+      <property>arbitrary</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[GPL'U]" CODE="[GPL'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>GPL unit</name>

+      <property>biologic activity of anticardiolipin IgG</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[MPL'U]" CODE="[MPL'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>MPL unit</name>

+      <property>biologic activity of anticardiolipin IgM</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[APL'U]" CODE="[APL'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>APL unit</name>

+      <property>biologic activity of anticardiolipin IgA</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[beth'U]" CODE="[BETH'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Bethesda unit</name>

+      <property>biologic activity of factor VIII inhibitor</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[anti'Xa'U]" CODE="[ANTI'XA'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>anti factor Xa unit</name>

+      <property>biologic activity of factor Xa inhibitor (heparin)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[todd'U]" CODE="[TODD'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Todd unit</name>

+      <property>biologic activity antistreptolysin O</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[dye'U]" CODE="[DYE'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Dye unit</name>

+      <property>biologic activity of amylase</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[smgy'U]" CODE="[SMGY'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Somogyi unit</name>

+      <property>biologic activity of amylase</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[bdsk'U]" CODE="[BDSK'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Bodansky unit</name>

+      <property>biologic activity of phosphatase</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ka'U]" CODE="[KA'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>King-Armstrong unit</name>

+      <property>biologic activity of phosphatase</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[knk'U]" CODE="[KNK'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Kunkel unit</name>

+      <property>arbitrary biologic activity</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[mclg'U]" CODE="[MCLG'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Mac Lagan unit</name>

+      <property>arbitrary biologic activity</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[tb'U]" CODE="[TB'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>tuberculin unit</name>

+      <property>biologic activity of tuberculin</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[CCID_50]" CODE="[CCID_50]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>50% cell culture infectious dose</name>

+      <printSymbol>CCID<sub>50</sub>

+      </printSymbol>

+      <property>biologic activity (infectivity) of an infectious agent preparation</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[TCID_50]" CODE="[TCID_50]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>50% tissue culture infectious dose</name>

+      <printSymbol>TCID<sub>50</sub>

+      </printSymbol>

+      <property>biologic activity (infectivity) of an infectious agent preparation</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[EID_50]" CODE="[EID_50]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>50% embryo infectious dose</name>

+      <printSymbol>EID<sub>50</sub>

+      </printSymbol>

+      <property>biologic activity (infectivity) of an infectious agent preparation</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[PFU]" CODE="[PFU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>plaque forming units</name>

+      <printSymbol>PFU</printSymbol>

+      <property>amount of an infectious agent</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[FFU]" CODE="[FFU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>focus forming units</name>

+      <printSymbol>FFU</printSymbol>

+      <property>amount of an infectious agent</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[CFU]" CODE="[CFU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>colony forming units</name>

+      <printSymbol>CFU</printSymbol>

+      <property>amount of a proliferating organism</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[BAU]" CODE="[BAU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>bioequivalent allergen unit</name>

+      <printSymbol>BAU</printSymbol>

+      <property>amount of an allergen callibrated through in-vivo testing based on the ID50EAL method of (intradermal dilution for 50mm sum of erythema diameters</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[AU]" CODE="[AU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>allergen unit</name>

+      <printSymbol>AU</printSymbol>

+      <property>procedure defined amount of an allergen using some reference standard</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Amb'a'1'U]" CODE="[AMB'A'1'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>allergen unit for Ambrosia artemisiifolia</name>

+      <printSymbol>Amb a 1 U</printSymbol>

+      <property>procedure defined amount of the major allergen of ragweed.</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[PNU]" CODE="[PNU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>protein nitrogen unit</name>

+      <printSymbol>PNU</printSymbol>

+      <property>procedure defined amount of a protein substance</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Lf]" CODE="[LF]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Limit of flocculation</name>

+      <printSymbol>Lf</printSymbol>

+      <property>procedure defined amount of an antigen substance</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[D'ag'U]" CODE="[D'AG'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>D-antigen unit</name>

+      <printSymbol/>

+      <property>procedure defined amount of a poliomyelitis d-antigen substance</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[FEU]" CODE="[FEU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>fibrinogen equivalent unit</name>

+      <printSymbol/>

+      <property>amount of fibrinogen broken down into the measured d-dimers</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ELU]" CODE="[ELU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>ELISA unit</name>

+      <printSymbol/>

+      <property>arbitrary ELISA unit</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[EU]" CODE="[EU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Ehrlich unit</name>

+      <printSymbol/>

+      <property>Ehrlich unit</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Np" CODE="NEP" isMetric="yes" isSpecial="yes" class="levels">

+      <name>neper</name>

+      <printSymbol>Np</printSymbol>

+      <property>level</property>

+      <value Unit="ln(1 1)" UNIT="LN(1 1)">

+         <function name="ln" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B" CODE="B" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel</name>

+      <printSymbol>B</printSymbol>

+      <property>level</property>

+      <value Unit="lg(1 1)" UNIT="LG(1 1)">

+         <function name="lg" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[SPL]" CODE="B[SPL]" isMetric="yes" isSpecial="yes"

+         class="levels">

+      <name>bel sound pressure</name>

+      <printSymbol>B(SPL)</printSymbol>

+      <property>pressure level</property>

+      <value Unit="2lg(2 10*-5.Pa)" UNIT="2LG(2 10*-5.PAL)">

+         <function name="lgTimes2" value="2" Unit="10*-5.Pa"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[V]" CODE="B[V]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel volt</name>

+      <printSymbol>B(V)</printSymbol>

+      <property>electric potential level</property>

+      <value Unit="2lg(1 V)" UNIT="2LG(1 V)">

+         <function name="lgTimes2" value="1" Unit="V"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[mV]" CODE="B[MV]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel millivolt</name>

+      <printSymbol>B(mV)</printSymbol>

+      <property>electric potential level</property>

+      <value Unit="2lg(1 mV)" UNIT="2LG(1 MV)">

+         <function name="lgTimes2" value="1" Unit="mV"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[uV]" CODE="B[UV]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel microvolt</name>

+      <printSymbol>B(&#956;V)</printSymbol>

+      <property>electric potential level</property>

+      <value Unit="2lg(1 uV)" UNIT="2LG(1 UV)">

+         <function name="lgTimes2" value="1" Unit="uV"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[10.nV]" CODE="B[10.NV]" isMetric="yes" isSpecial="yes"

+         class="levels">

+      <name>bel 10 nanovolt</name>

+      <printSymbol>B(10 nV)</printSymbol>

+      <property>electric potential level</property>

+      <value Unit="2lg(10 nV)" UNIT="2LG(10 NV)">

+         <function name="lgTimes2" value="10" Unit="nV"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[W]" CODE="B[W]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel watt</name>

+      <printSymbol>B(W)</printSymbol>

+      <property>power level</property>

+      <value Unit="lg(1 W)" UNIT="LG(1 W)">

+         <function name="lg" value="1" Unit="W"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[kW]" CODE="B[KW]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel kilowatt</name>

+      <printSymbol>B(kW)</printSymbol>

+      <property>power level</property>

+      <value Unit="lg(1 kW)" UNIT="LG(1 KW)">

+         <function name="lg" value="1" Unit="kW"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="st" CODE="STR" isMetric="yes" class="misc">

+      <name>stere</name>

+      <printSymbol>st</printSymbol>

+      <property>volume</property>

+      <value Unit="m3" UNIT="M3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Ao" CODE="AO" isMetric="no" class="misc">

+      <name>&#197;ngstr&#246;m</name>

+      <printSymbol>&#197;</printSymbol>

+      <property>length</property>

+      <value Unit="nm" UNIT="NM" value="0.1">0.1</value>

+   </unit>

+   <unit xmlns="" Code="b" CODE="BRN" isMetric="no" class="misc">

+      <name>barn</name>

+      <printSymbol>b</printSymbol>

+      <property>action area</property>

+      <value Unit="fm2" UNIT="FM2" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="att" CODE="ATT" isMetric="no" class="misc">

+      <name>technical atmosphere</name>

+      <printSymbol>at</printSymbol>

+      <property>pressure</property>

+      <value Unit="kgf/cm2" UNIT="KGF/CM2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="mho" CODE="MHO" isMetric="yes" class="misc">

+      <name>mho</name>

+      <printSymbol>mho</printSymbol>

+      <property>electric conductance</property>

+      <value Unit="S" UNIT="S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[psi]" CODE="[PSI]" isMetric="no" class="misc">

+      <name>pound per sqare inch</name>

+      <printSymbol>psi</printSymbol>

+      <property>pressure</property>

+      <value Unit="[lbf_av]/[in_i]2" UNIT="[LBF_AV]/[IN_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="circ" CODE="CIRC" isMetric="no" class="misc">

+      <name>circle</name>

+      <printSymbol>circ</printSymbol>

+      <property>plane angle</property>

+      <value Unit="[pi].rad" UNIT="[PI].RAD" value="2">2</value>

+   </unit>

+   <unit xmlns="" Code="sph" CODE="SPH" isMetric="no" class="misc">

+      <name>spere</name>

+      <printSymbol>sph</printSymbol>

+      <property>solid angle</property>

+      <value Unit="[pi].sr" UNIT="[PI].SR" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[car_m]" CODE="[CAR_M]" isMetric="no" class="misc">

+      <name>metric carat</name>

+      <printSymbol>ct<sub>m</sub>

+      </printSymbol>

+      <property>mass</property>

+      <value Unit="g" UNIT="G" value="2e-1">0.2</value>

+   </unit>

+   <unit xmlns="" Code="[car_Au]" CODE="[CAR_AU]" isMetric="no" class="misc">

+      <name>carat of gold alloys</name>

+      <printSymbol>ct<sub>

+            <r>Au</r>

+         </sub>

+      </printSymbol>

+      <property>mass fraction</property>

+      <value Unit="/24" UNIT="/24" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[smoot]" CODE="[SMOOT]" isMetric="no" class="misc">

+      <name>Smoot</name>

+      <printSymbol/>

+      <property>length</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="67">67</value>

+   </unit>

+   <unit xmlns="" Code="bit_s" CODE="BIT_S" isMetric="no" isSpecial="yes"

+         class="infotech">

+      <name>bit</name>

+      <printSymbol>bit<sub>s</sub>

+      </printSymbol>

+      <property>amount of information</property>

+      <value Unit="ld(1 1)" UNIT="ld(1 1)">

+         <function name="ld" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="bit" CODE="BIT" isMetric="yes" class="infotech">

+      <name>bit</name>

+      <printSymbol>bit</printSymbol>

+      <property>amount of information</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="By" CODE="BY" isMetric="yes" class="infotech">

+      <name>byte</name>

+      <printSymbol>B</printSymbol>

+      <property>amount of information</property>

+      <value Unit="bit" UNIT="bit" value="8">8</value>

+   </unit>

+   <unit xmlns="" Code="Bd" CODE="BD" isMetric="yes" class="infotech">

+      <name>baud</name>

+      <printSymbol>Bd</printSymbol>

+      <property>signal transmission rate</property>

+      <value Unit="/s" UNIT="/s" value="1">1</value>

+   </unit>

+   <prefix xmlns="" Code="Ki" CODE="KIB">

+      <name>kibi</name>

+      <printSymbol>Ki</printSymbol>

+      <value value="1024">1024</value>

+   </prefix>

+   <prefix xmlns="" Code="Mi" CODE="MIB">

+      <name>mebi</name>

+      <printSymbol>Mi</printSymbol>

+      <value value="1048576">1048576</value>

+   </prefix>

+   <prefix xmlns="" Code="Gi" CODE="GIB">

+      <name>gibi</name>

+      <printSymbol>Gi</printSymbol>

+      <value value="1073741824">1073741824</value>

+   </prefix>

+   <prefix xmlns="" Code="Ti" CODE="TIB">

+      <name>tebi</name>

+      <printSymbol>Ti</printSymbol>

+      <value value="1099511627776">1099511627776</value>

+   </prefix>

 </root>
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.ucum/.classpath b/bundles/org.eclipse.uomo.ucum/.classpath
index a625c7f..23d1b61 100644
--- a/bundles/org.eclipse.uomo.ucum/.classpath
+++ b/bundles/org.eclipse.uomo.ucum/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/main/java/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/main/java/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.ucum/.gitignore b/bundles/org.eclipse.uomo.ucum/.gitignore
index 2c36b17..21d5518 100644
--- a/bundles/org.eclipse.uomo.ucum/.gitignore
+++ b/bundles/org.eclipse.uomo.ucum/.gitignore
@@ -1,2 +1,2 @@
-/target
-/.settings
+/target

+/.settings

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/UcumFormatService.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/UcumFormatService.java
index a03a847..ca9d5a6 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/UcumFormatService.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/UcumFormatService.java
@@ -1,56 +1,56 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, JScience and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.ucum;
-
-import java.io.IOException;
-import java.text.ParsePosition;
-
-import org.unitsofmeasurement.service.UnitFormatService;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * <p> This interface provides methods for OSGi bundles to parse/format units
- *     as per the <a href="http://www.unitsofmeasure.org/">
- *     Unified Code for Units of Measure (UCUM)</a> specification.</p>
- *
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @see <a href="http://aurora.regenstrief.org/~ucum/ucum.html">UCUM Full Specification</a>
- * @version 1.1 ($Revision: 306 $), $Date: 2010-10-29 21:42:27 +0100 (Fr, 29 Okt 2010) $
- */
-public interface UcumFormatService extends UnitFormatService {
-
-    /**
-     * Formats the specified unit.
-     *
-     * @param unit the unit to format.
-     * @param appendable the appendable destination.
-     * @return the appendable destination passed in with formatted text appended.
-     * @throws IOException if an error occurs.
-     */
-    Appendable format(Unit<?> unit, Appendable appendable)
-            throws IOException;
-
-    /**
-     * Parses a portion of the specified {@link CharSequence} from the
-     * specified position to produce a unit. If there is no unit to parse
-     * the unitary unit (dimensionless) is returned.
-     *
-     * @param csq the <code>CharSequence</code> to parse.
-     * @param cursor the cursor holding the current parsing index or <code>
-     *        null</code> to parse the whole character sequence.
-     * @return the unit parsed from the specified character sub-sequence.
-     * @throws IllegalArgumentException if any problem occurs while parsing the
-     *         specified character sequence (e.g. illegal syntax).
-     */
-    Unit<?> parse(CharSequence csq, ParsePosition cursor)
-            throws IllegalArgumentException;
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, JScience and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.ucum;

+

+import java.io.IOException;

+import java.text.ParsePosition;

+

+import org.unitsofmeasurement.service.UnitFormatService;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * <p> This interface provides methods for OSGi bundles to parse/format units

+ *     as per the <a href="http://www.unitsofmeasure.org/">

+ *     Unified Code for Units of Measure (UCUM)</a> specification.</p>

+ *

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @see <a href="http://aurora.regenstrief.org/~ucum/ucum.html">UCUM Full Specification</a>

+ * @version 1.1 ($Revision: 306 $), $Date: 2010-10-29 21:42:27 +0100 (Fr, 29 Okt 2010) $

+ */

+public interface UcumFormatService extends UnitFormatService {

+

+    /**

+     * Formats the specified unit.

+     *

+     * @param unit the unit to format.

+     * @param appendable the appendable destination.

+     * @return the appendable destination passed in with formatted text appended.

+     * @throws IOException if an error occurs.

+     */

+    Appendable format(Unit<?> unit, Appendable appendable)

+            throws IOException;

+

+    /**

+     * Parses a portion of the specified {@link CharSequence} from the

+     * specified position to produce a unit. If there is no unit to parse

+     * the unitary unit (dimensionless) is returned.

+     *

+     * @param csq the <code>CharSequence</code> to parse.

+     * @param cursor the cursor holding the current parsing index or <code>

+     *        null</code> to parse the whole character sequence.

+     * @return the unit parsed from the specified character sub-sequence.

+     * @throws IllegalArgumentException if any problem occurs while parsing the

+     *         specified character sequence (e.g. illegal syntax).

+     */

+    Unit<?> parse(CharSequence csq, ParsePosition cursor)

+            throws IllegalArgumentException;

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/expression/Factor.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/expression/Factor.java
index 91d3e61..6f124dc 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/expression/Factor.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/expression/Factor.java
@@ -1,50 +1,50 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2008, Copyright (c) 2006, 2008 Kestral Computing P/L.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing P/L - initial implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.expression;
-
-
-public class Factor extends Component {
-	
-	private int value;
-
-	/**
-	 * 
-	 */
-	public Factor() {
-		super();
-		// TODO Auto-generated constructor stub
-	}
-
-	/**
-	 * @param value
-	 */
-	public Factor(int value) {
-		super();
-		this.value = value;
-	}
-
-	/**
-	 * @return the value
-	 */
-	public int getValue() {
-		return value;
-	}
-
-	/**
-	 * @param value the value to set
-	 */
-	public void setValue(int value) {
-		this.value = value;
-	}
-
-	
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2008, Copyright (c) 2006, 2008 Kestral Computing P/L.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing P/L - initial implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.expression;

+

+

+public class Factor extends Component {

+	

+	private int value;

+

+	/**

+	 * 

+	 */

+	public Factor() {

+		super();

+		// TODO Auto-generated constructor stub

+	}

+

+	/**

+	 * @param value

+	 */

+	public Factor(int value) {

+		super();

+		this.value = value;

+	}

+

+	/**

+	 * @return the value

+	 */

+	public int getValue() {

+		return value;

+	}

+

+	/**

+	 * @param value the value to set

+	 */

+	public void setValue(int value) {

+		this.value = value;

+	}

+

+	

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/expression/Symbol.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/expression/Symbol.java
index 3f7aaa3..0728179 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/expression/Symbol.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/expression/Symbol.java
@@ -1,92 +1,92 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2011, Copyright (c) 2006, 2008 Kestral Computing P/L.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing P/L - initial implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.expression;
-
-import org.eclipse.uomo.ucum.model.Prefix;
-import org.eclipse.uomo.ucum.model.UcumUnit;
-
-public class Symbol extends Component {
-
-	private UcumUnit unit; // may be Base Unit or DefinedUnit
-	private Prefix prefix;  // only if unit is metric 
-	private int exponent;
-		
-	/**
-	 * 
-	 */
-	public Symbol() {
-		super();
-	}
-
-	/**
-	 * @param unit
-	 * @param prefix
-	 * @param exponent
-	 */
-	public Symbol(UcumUnit unit, Prefix prefix, int exponent) {
-		super();
-		this.unit = unit;
-		this.prefix = prefix;
-		this.exponent = exponent;
-	}
-
-	/**
-	 * @return the unit
-	 */
-	public UcumUnit getUnit() {
-		return unit;
-	}
-
-	/**
-	 * @param unit the unit to set
-	 */
-	public void setUnit(UcumUnit unit) {
-		this.unit = unit;
-	}
-
-	/**
-	 * @return the prefix
-	 */
-	public Prefix getPrefix() {
-		return prefix;
-	}
-
-	/**
-	 * @param prefix the prefix to set
-	 */
-	public void setPrefix(Prefix prefix) {
-		this.prefix = prefix;
-	}
-
-	/**
-	 * @return the exponent
-	 */
-	public int getExponent() {
-		return exponent;
-	}
-
-	/**
-	 * @param exponent the exponent to set
-	 */
-	public void setExponent(int exponent) {
-		this.exponent = exponent;
-	}
-	
-	public boolean hasPrefix() {
-		return prefix != null;
-	}
-
-	public void invertExponent() {
-		exponent = -exponent;
-	}
-	
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2011, Copyright (c) 2006, 2008 Kestral Computing P/L.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing P/L - initial implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.expression;

+

+import org.eclipse.uomo.ucum.model.Prefix;

+import org.eclipse.uomo.ucum.model.UcumUnit;

+

+public class Symbol extends Component {

+

+	private UcumUnit unit; // may be Base Unit or DefinedUnit

+	private Prefix prefix;  // only if unit is metric 

+	private int exponent;

+		

+	/**

+	 * 

+	 */

+	public Symbol() {

+		super();

+	}

+

+	/**

+	 * @param unit

+	 * @param prefix

+	 * @param exponent

+	 */

+	public Symbol(UcumUnit unit, Prefix prefix, int exponent) {

+		super();

+		this.unit = unit;

+		this.prefix = prefix;

+		this.exponent = exponent;

+	}

+

+	/**

+	 * @return the unit

+	 */

+	public UcumUnit getUnit() {

+		return unit;

+	}

+

+	/**

+	 * @param unit the unit to set

+	 */

+	public void setUnit(UcumUnit unit) {

+		this.unit = unit;

+	}

+

+	/**

+	 * @return the prefix

+	 */

+	public Prefix getPrefix() {

+		return prefix;

+	}

+

+	/**

+	 * @param prefix the prefix to set

+	 */

+	public void setPrefix(Prefix prefix) {

+		this.prefix = prefix;

+	}

+

+	/**

+	 * @return the exponent

+	 */

+	public int getExponent() {

+		return exponent;

+	}

+

+	/**

+	 * @param exponent the exponent to set

+	 */

+	public void setExponent(int exponent) {

+		this.exponent = exponent;

+	}

+	

+	public boolean hasPrefix() {

+		return prefix != null;

+	}

+

+	public void invertExponent() {

+		exponent = -exponent;

+	}

+	

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/Canonical.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/Canonical.java
index 68694b3..46a3b54 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/Canonical.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/Canonical.java
@@ -1,79 +1,79 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2008, Copyright (c) 2006, 2008 Kestral Computing P/L.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing P/L - initial implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.impl;
-
-import java.math.BigDecimal;
-import java.math.MathContext;
-
-import org.eclipse.uomo.ucum.expression.Term;
-
-// TODO replace this with extended QuantityAmount
-class Canonical {
-
-	private BigDecimal value;
-	private Term unit;
-	
-	/**
-	 * @param value
-	 * @param unit
-	 */
-	public Canonical(BigDecimal value, Term unit) {
-		super();
-		this.value = value;
-		this.unit = unit;
-	}
-
-	/**
-	 * @return the value
-	 */
-	public BigDecimal getValue() {
-		return value;
-	}
-
-	/**
-	 * @return the unit
-	 */
-	public Term getUnit() {
-		return unit;
-	}
-
-	/**
-	 * @param value the value to set
-	 */
-	public void setValue(BigDecimal value) {
-		this.value = value;
-	}
-
-	void multiplyValue(Number number) {
-		value = value.multiply((BigDecimal) number);		
-	}
-
-	void multiplyValue(int multiplicand) {
-		value = value.multiply(new BigDecimal(multiplicand));		
-	}
-
-	public boolean hasUnit() {
-		return unit != null;
-	}
-
-	/**
-	 * @param unit the unit to set
-	 */
-	public void setUnit(Term unit) {
-		this.unit = unit;
-	}
-
-	void divideValue(BigDecimal divisor) {
-		value = value.divide(divisor, new MathContext(20));		
-	}
-
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2008, Copyright (c) 2006, 2008 Kestral Computing P/L.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing P/L - initial implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.impl;

+

+import java.math.BigDecimal;

+import java.math.MathContext;

+

+import org.eclipse.uomo.ucum.expression.Term;

+

+// TODO replace this with extended QuantityAmount

+class Canonical {

+

+	private BigDecimal value;

+	private Term unit;

+	

+	/**

+	 * @param value

+	 * @param unit

+	 */

+	public Canonical(BigDecimal value, Term unit) {

+		super();

+		this.value = value;

+		this.unit = unit;

+	}

+

+	/**

+	 * @return the value

+	 */

+	public BigDecimal getValue() {

+		return value;

+	}

+

+	/**

+	 * @return the unit

+	 */

+	public Term getUnit() {

+		return unit;

+	}

+

+	/**

+	 * @param value the value to set

+	 */

+	public void setValue(BigDecimal value) {

+		this.value = value;

+	}

+

+	void multiplyValue(Number number) {

+		value = value.multiply((BigDecimal) number);		

+	}

+

+	void multiplyValue(int multiplicand) {

+		value = value.multiply(new BigDecimal(multiplicand));		

+	}

+

+	public boolean hasUnit() {

+		return unit != null;

+	}

+

+	/**

+	 * @param unit the unit to set

+	 */

+	public void setUnit(Term unit) {

+		this.unit = unit;

+	}

+

+	void divideValue(BigDecimal divisor) {

+		value = value.divide(divisor, new MathContext(20));		

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/UcumConverter.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/UcumConverter.java
index 442480f..1a9b99a 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/UcumConverter.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/UcumConverter.java
@@ -1,327 +1,327 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2011, Copyright (c) 2006, 2008 Kestral Computing P/L.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing P/L - initial implementation
- *    
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.impl;
-
-import static org.eclipse.uomo.core.impl.OutputHelper.isConsoleOutput;
-import static org.eclipse.uomo.core.impl.OutputHelper.println;
-import static org.eclipse.uomo.ucum.model.ConceptKind.*;
-import static org.eclipse.uomo.ucum.expression.Operator.*;
-
-import java.math.BigDecimal;
-import java.math.MathContext;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.uomo.core.UOMoRuntimeException;
-import org.eclipse.uomo.ucum.expression.Component;
-import org.eclipse.uomo.ucum.expression.Factor;
-import org.eclipse.uomo.ucum.expression.Symbol;
-import org.eclipse.uomo.ucum.expression.Term;
-import org.eclipse.uomo.ucum.model.DefinedUnit;
-import org.eclipse.uomo.ucum.model.UcumModel;
-import org.eclipse.uomo.ucum.parsers.ExpressionComposer;
-import org.eclipse.uomo.ucum.parsers.ExpressionParser;
-import org.eclipse.uomo.ucum.special.SpecialUnitHandler;
-import org.eclipse.uomo.units.AbstractConverter;
-import org.eclipse.uomo.util.Registry;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-/**
- * = [mu_0] = 4.[pi].10*-7.N/A2 = (g.m/s2)/(C/s)2? = g.m/s2/(C2/s2) =
- * g.m/s2/C2.s2 = g.m/C2.s2/s2 = g.m/C2 = m.g.C-2
- * 
- * @author Grahame Grieve
- * @author Werner Keil
- */
-class UcumConverter extends AbstractConverter {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -895607408258138526L;
-	private final UcumModel model;
-	@SuppressWarnings("rawtypes")
-	private final Registry<SpecialUnitHandler> handlers;
-	private final UnitConverter compound;
-	
-	private Factor one = new Factor(1);
-
-	/**
-	 * @param model
-	 */
-	public UcumConverter(UcumModel model, Registry handlers) {
-		super();
-		this.model = model;
-		this.handlers = handlers;
-		List<UnitConverter> compounds = getCompoundConverters();
-		compound = compounds.get(0);
-	}
-
-	public Canonical convert(Term term) throws UOMoRuntimeException {
-		return convertTerm(term);
-	}
-
-	private Canonical convertTerm(Term term) throws UOMoRuntimeException {
-		Canonical res = new Canonical(BigDecimal.ONE, new Term());
-		if (term.hasComp())
-			res.getUnit().setComp(convertComp(res, term.getComp()));
-		if (term.hasOp())
-			res.getUnit().setOp(term.getOp());
-		if (term.hasTerm()) {
-			Canonical t = convertTerm(term.getTerm());
-			res.setValue(res.getValue().multiply(t.getValue()));
-			if (t.hasUnit())
-				res.getUnit().setTermCheckOp(t.getUnit());
-			else
-				res.getUnit().setOp(null);
-		}
-
-		// normalise
-		debug("normalise", res.getUnit()); //$NON-NLS-1$
-		if (res.getUnit().hasOp() && res.getUnit().getOp() == DIVISION) {
-			res.getUnit().setOp(MULTIPLICATION);
-			flipExponents(res.getUnit().getTerm());
-			debug("flipped", res.getUnit()); //$NON-NLS-1$
-		}
-
-		if (!res.getUnit().hasComp() || res.getUnit().getComp() == one) {
-			res.setUnit(res.getUnit().getTerm());
-			debug("trimmed", res.getUnit()); //$NON-NLS-1$
-		}
-
-		// everything in scope is a multiplication operation. If comp is a term,
-		// then
-		// we are going to tack our term on the end of that term as a
-		// multiplication, and
-		// make comp our term
-
-		if (res.hasUnit() && res.getUnit().hasComp()
-				&& res.getUnit().getComp() instanceof Term) {
-			Term end = getEndTerm((Term) res.getUnit().getComp());
-			assert end.getOp() == null;
-			end.setOp(MULTIPLICATION);
-			end.setTermCheckOp(res.getUnit().getTerm());
-			res.setUnit((Term) res.getUnit().getComp());
-			debug("reorged", res.getUnit()); //$NON-NLS-1$
-		}
-
-		if (res.hasUnit()
-				&& (!res.getUnit().hasComp() || res.getUnit().getComp() == one)) {
-			res.setUnit(res.getUnit().getTerm());
-			debug("trimmed", res.getUnit()); //$NON-NLS-1$
-		}
-		// now we have a linear list of terms, each with one component.
-		// we scan through the list looking for common components to factor out
-		// we have to scan into the list because we may have deep duplicates
-		// from the previous flattening operation. we also remove anything
-		// that's
-		// ended up with an exponent of 0 during this operation
-		if (res.hasUnit())
-			res.setUnit(removeDuplicateComponents(res.getUnit()));
-
-		if (res.hasUnit() && !res.getUnit().hasTerm())
-			res.getUnit().setOp(null);
-		debug("norm finished", res.getUnit()); //$NON-NLS-1$
-		// System.out.println("value: "+res.getValue().toPlainString()+"; units: "+new
-		// ExpressionComposer().compose(res.getUnit()));
-		return res;
-	}
-
-	private void debug(String state, Term unit) {
-		if (isConsoleOutput()) { // avoiding any call if no debug output set
-			println(state + ": " + new ExpressionComposer().compose(unit)); //$NON-NLS-1$
-		}
-	}
-
-	private Term getEndTerm(Term term) {
-		if (term.hasTerm())
-			return getEndTerm(term.getTerm());
-		else
-			return term;
-	}
-
-	private Term removeDuplicateComponents(Term unit) {
-		if (unit == null)
-			return null;
-		assert unit.getComp() instanceof Symbol; // because that should be all
-													// that's left
-		Symbol symO = (Symbol) unit.getComp();
-		Term inner = findDuplicateCompOwner(unit.getTerm(), symO);
-		if (inner != null) {
-			Symbol symI = (Symbol) inner.getComp();
-			symI.setExponent(symI.getExponent() + symO.getExponent());
-			return removeDuplicateComponents(unit.getTerm());
-		}
-		if (symO.getExponent() == 0)
-			return removeDuplicateComponents(unit.getTerm());
-		unit.setTermCheckOp(removeDuplicateComponents(unit.getTerm()));
-		return unit;
-	}
-
-	private Term findDuplicateCompOwner(Term term, Symbol comp) {
-		if (term == null)
-			return null;
-		if (term.getComp() instanceof Symbol) {
-			Symbol sym = (Symbol) term.getComp();
-			if (sym.getPrefix() == comp.getPrefix() && // i.e. null
-					sym.getUnit() == comp.getUnit())
-				return term;
-		}
-		return findDuplicateCompOwner(term.getTerm(), comp);
-	}
-
-	private void flipExponents(Term term) {
-		if (term.getComp() instanceof Symbol) {
-			((Symbol) term.getComp()).invertExponent();
-		}
-		if (term.hasTerm()) {
-			flipExponents(term.getTerm());
-		}
-	}
-
-	private Component convertComp(Canonical ctxt, Component comp)
-			throws UOMoRuntimeException {
-		if (comp instanceof Term) {
-			Canonical t = convertTerm((Term) comp);
-			ctxt.multiplyValue(t.getValue());
-			return t.getUnit();
-		} else if (comp instanceof Factor) {
-			ctxt.multiplyValue(((Factor) comp).getValue());
-			return one; // nothing to convert
-		} else if (comp instanceof Symbol)
-			return convertSymbol(ctxt, (Symbol) comp);
-		else
-			throw new UOMoRuntimeException("unknown component type " //$NON-NLS-1$
-					+ comp.getClass().toString());
-	}
-
-	private Component convertSymbol(Canonical ctxt, Symbol comp)
-			throws UOMoRuntimeException {
-		if (comp.hasPrefix()) {
-//			ctxt.multiplyValue(comp.getPrefix().getValue());
-			ctxt.multiplyValue(((BigDecimal)comp.getPrefix().getValue()).pow(
-					comp.getExponent(),	MathContext.DECIMAL128));
-		}
-
-		if (comp.getUnit().getKind() == BASEUNIT) {
-			Symbol res = new Symbol();
-			res.setUnit(comp.getUnit());
-			res.setExponent(comp.getExponent());
-			return res;
-		} else {
-			DefinedUnit unit = (DefinedUnit) comp.getUnit();
-			String u = unit.getValue().getUnit();
-			if (unit.isSpecial()) {
-				if (!handlers.exists(unit.getCode()))
-					throw new UOMoRuntimeException("Not handled yet (special unit)"); //$NON-NLS-1$
-				else {
-					u = handlers.get(unit.getCode()).getUnits();
-					ctxt.multiplyValue(handlers.get(unit.getCode()).value());
-				}
-			} else
-				ctxt.multiplyValue(unit.getValue().value());
-			Term canonical = new ExpressionParser(model).parse(u);
-			if (canonical.hasComp() && !canonical.hasOp()
-					&& !canonical.hasTerm()) {
-				Component ret = convertComp(ctxt, canonical.getComp());
-				if (comp.getExponent() == 1)
-					return ret;
-				else if (ret instanceof Factor) {
-					((Factor) ret).setValue(comp.getExponent()
-							+ ((Factor) ret).getValue());
-					return ret;
-				} else if (ret instanceof Symbol) {
-					((Symbol) ret).setExponent(comp.getExponent()
-							* ((Symbol) ret).getExponent());
-					return ret;
-				} else if (ret instanceof Term) {
-					applyExponent((Term) ret, comp.getExponent());
-					return ret;
-				} else
-					throw new UOMoRuntimeException("unknown component type " //$NON-NLS-1$
-							+ comp.getClass().toString());
-			} else {
-				Canonical t1 = convertTerm(canonical);
-				Term ret = t1.getUnit();
-				if (comp.getExponent() == -1 && ret.hasComp() && ret.hasOp()
-						&& ret.hasTerm() && ret.getTerm().hasComp()
-						&& !ret.getTerm().hasOp() && !ret.getTerm().hasTerm()) {
-					Component t = ret.getTerm().getComp();
-					ret.getTerm().setComp(ret.getComp());
-					ret.setComp(t);
-					ctxt.divideValue(t1.getValue());
-					return ret;
-				} else if (comp.getExponent() != 1) {
-					ctxt.multiplyValue(t1.getValue());
-					// what we have to do is push the exponent into the all the
-					// symbols contained herein
-					applyExponent(ret, comp.getExponent());
-					return ret;
-				} else {
-					ctxt.multiplyValue(t1.getValue());
-					return ret;
-				}
-			}
-		}
-	}
-
-	private void applyExponent(Term term, int exponent) {
-		if (term == null)
-			return;
-		if (term.hasComp()) {
-			if (term.getComp() instanceof Term) {
-				applyExponent((Term) term.getComp(), exponent);
-			} else if (term.getComp() instanceof Symbol) {
-				Symbol sym = (Symbol) term.getComp();
-				sym.setExponent(sym.getExponent() * exponent);
-			}
-
-		}
-		applyExponent(term.getTerm(), exponent);
-	}
-
-	public UnitConverter concatenate(UnitConverter converter) {
-		return compound.concatenate(converter);
-	}
-
-	public double convert(double value) {
-		return compound.convert(value);
-	}
-
-	public BigDecimal convert(BigDecimal value, MathContext ctx)
-			throws ArithmeticException {
-		return compound.convert(value, ctx);
-	}
-
-	public List<UnitConverter> getCompoundConverters() {
-		final List<UnitConverter> compound = new ArrayList<UnitConverter>();
-		compound.add(this);
-		return compound;
-	}
-
-	public UnitConverter inverse() {
-		return compound.inverse();
-	}
-
-	public boolean isIdentity() {
-		return false;
-	}
-
-	public boolean isLinear() {
-		return false;
-	}
-
-	public Number convert(Number value) {
-		return compound.convert(value);
-	}
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2011, Copyright (c) 2006, 2008 Kestral Computing P/L.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing P/L - initial implementation

+ *    

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.impl;

+

+import static org.eclipse.uomo.core.impl.OutputHelper.isConsoleOutput;

+import static org.eclipse.uomo.core.impl.OutputHelper.println;

+import static org.eclipse.uomo.ucum.model.ConceptKind.*;

+import static org.eclipse.uomo.ucum.expression.Operator.*;

+

+import java.math.BigDecimal;

+import java.math.MathContext;

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.uomo.core.UOMoRuntimeException;

+import org.eclipse.uomo.ucum.expression.Component;

+import org.eclipse.uomo.ucum.expression.Factor;

+import org.eclipse.uomo.ucum.expression.Symbol;

+import org.eclipse.uomo.ucum.expression.Term;

+import org.eclipse.uomo.ucum.model.DefinedUnit;

+import org.eclipse.uomo.ucum.model.UcumModel;

+import org.eclipse.uomo.ucum.parsers.ExpressionComposer;

+import org.eclipse.uomo.ucum.parsers.ExpressionParser;

+import org.eclipse.uomo.ucum.special.SpecialUnitHandler;

+import org.eclipse.uomo.units.AbstractConverter;

+import org.eclipse.uomo.util.Registry;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+/**

+ * = [mu_0] = 4.[pi].10*-7.N/A2 = (g.m/s2)/(C/s)2? = g.m/s2/(C2/s2) =

+ * g.m/s2/C2.s2 = g.m/C2.s2/s2 = g.m/C2 = m.g.C-2

+ * 

+ * @author Grahame Grieve

+ * @author Werner Keil

+ */

+class UcumConverter extends AbstractConverter {

+

+	/**

+	 * 

+	 */

+	private static final long serialVersionUID = -895607408258138526L;

+	private final UcumModel model;

+	@SuppressWarnings("rawtypes")

+	private final Registry<SpecialUnitHandler> handlers;

+	private final UnitConverter compound;

+	

+	private Factor one = new Factor(1);

+

+	/**

+	 * @param model

+	 */

+	public UcumConverter(UcumModel model, Registry handlers) {

+		super();

+		this.model = model;

+		this.handlers = handlers;

+		List<UnitConverter> compounds = getCompoundConverters();

+		compound = compounds.get(0);

+	}

+

+	public Canonical convert(Term term) throws UOMoRuntimeException {

+		return convertTerm(term);

+	}

+

+	private Canonical convertTerm(Term term) throws UOMoRuntimeException {

+		Canonical res = new Canonical(BigDecimal.ONE, new Term());

+		if (term.hasComp())

+			res.getUnit().setComp(convertComp(res, term.getComp()));

+		if (term.hasOp())

+			res.getUnit().setOp(term.getOp());

+		if (term.hasTerm()) {

+			Canonical t = convertTerm(term.getTerm());

+			res.setValue(res.getValue().multiply(t.getValue()));

+			if (t.hasUnit())

+				res.getUnit().setTermCheckOp(t.getUnit());

+			else

+				res.getUnit().setOp(null);

+		}

+

+		// normalise

+		debug("normalise", res.getUnit()); //$NON-NLS-1$

+		if (res.getUnit().hasOp() && res.getUnit().getOp() == DIVISION) {

+			res.getUnit().setOp(MULTIPLICATION);

+			flipExponents(res.getUnit().getTerm());

+			debug("flipped", res.getUnit()); //$NON-NLS-1$

+		}

+

+		if (!res.getUnit().hasComp() || res.getUnit().getComp() == one) {

+			res.setUnit(res.getUnit().getTerm());

+			debug("trimmed", res.getUnit()); //$NON-NLS-1$

+		}

+

+		// everything in scope is a multiplication operation. If comp is a term,

+		// then

+		// we are going to tack our term on the end of that term as a

+		// multiplication, and

+		// make comp our term

+

+		if (res.hasUnit() && res.getUnit().hasComp()

+				&& res.getUnit().getComp() instanceof Term) {

+			Term end = getEndTerm((Term) res.getUnit().getComp());

+			assert end.getOp() == null;

+			end.setOp(MULTIPLICATION);

+			end.setTermCheckOp(res.getUnit().getTerm());

+			res.setUnit((Term) res.getUnit().getComp());

+			debug("reorged", res.getUnit()); //$NON-NLS-1$

+		}

+

+		if (res.hasUnit()

+				&& (!res.getUnit().hasComp() || res.getUnit().getComp() == one)) {

+			res.setUnit(res.getUnit().getTerm());

+			debug("trimmed", res.getUnit()); //$NON-NLS-1$

+		}

+		// now we have a linear list of terms, each with one component.

+		// we scan through the list looking for common components to factor out

+		// we have to scan into the list because we may have deep duplicates

+		// from the previous flattening operation. we also remove anything

+		// that's

+		// ended up with an exponent of 0 during this operation

+		if (res.hasUnit())

+			res.setUnit(removeDuplicateComponents(res.getUnit()));

+

+		if (res.hasUnit() && !res.getUnit().hasTerm())

+			res.getUnit().setOp(null);

+		debug("norm finished", res.getUnit()); //$NON-NLS-1$

+		// System.out.println("value: "+res.getValue().toPlainString()+"; units: "+new

+		// ExpressionComposer().compose(res.getUnit()));

+		return res;

+	}

+

+	private void debug(String state, Term unit) {

+		if (isConsoleOutput()) { // avoiding any call if no debug output set

+			println(state + ": " + new ExpressionComposer().compose(unit)); //$NON-NLS-1$

+		}

+	}

+

+	private Term getEndTerm(Term term) {

+		if (term.hasTerm())

+			return getEndTerm(term.getTerm());

+		else

+			return term;

+	}

+

+	private Term removeDuplicateComponents(Term unit) {

+		if (unit == null)

+			return null;

+		assert unit.getComp() instanceof Symbol; // because that should be all

+													// that's left

+		Symbol symO = (Symbol) unit.getComp();

+		Term inner = findDuplicateCompOwner(unit.getTerm(), symO);

+		if (inner != null) {

+			Symbol symI = (Symbol) inner.getComp();

+			symI.setExponent(symI.getExponent() + symO.getExponent());

+			return removeDuplicateComponents(unit.getTerm());

+		}

+		if (symO.getExponent() == 0)

+			return removeDuplicateComponents(unit.getTerm());

+		unit.setTermCheckOp(removeDuplicateComponents(unit.getTerm()));

+		return unit;

+	}

+

+	private Term findDuplicateCompOwner(Term term, Symbol comp) {

+		if (term == null)

+			return null;

+		if (term.getComp() instanceof Symbol) {

+			Symbol sym = (Symbol) term.getComp();

+			if (sym.getPrefix() == comp.getPrefix() && // i.e. null

+					sym.getUnit() == comp.getUnit())

+				return term;

+		}

+		return findDuplicateCompOwner(term.getTerm(), comp);

+	}

+

+	private void flipExponents(Term term) {

+		if (term.getComp() instanceof Symbol) {

+			((Symbol) term.getComp()).invertExponent();

+		}

+		if (term.hasTerm()) {

+			flipExponents(term.getTerm());

+		}

+	}

+

+	private Component convertComp(Canonical ctxt, Component comp)

+			throws UOMoRuntimeException {

+		if (comp instanceof Term) {

+			Canonical t = convertTerm((Term) comp);

+			ctxt.multiplyValue(t.getValue());

+			return t.getUnit();

+		} else if (comp instanceof Factor) {

+			ctxt.multiplyValue(((Factor) comp).getValue());

+			return one; // nothing to convert

+		} else if (comp instanceof Symbol)

+			return convertSymbol(ctxt, (Symbol) comp);

+		else

+			throw new UOMoRuntimeException("unknown component type " //$NON-NLS-1$

+					+ comp.getClass().toString());

+	}

+

+	private Component convertSymbol(Canonical ctxt, Symbol comp)

+			throws UOMoRuntimeException {

+		if (comp.hasPrefix()) {

+//			ctxt.multiplyValue(comp.getPrefix().getValue());

+			ctxt.multiplyValue(((BigDecimal)comp.getPrefix().getValue()).pow(

+					comp.getExponent(),	MathContext.DECIMAL128));

+		}

+

+		if (comp.getUnit().getKind() == BASEUNIT) {

+			Symbol res = new Symbol();

+			res.setUnit(comp.getUnit());

+			res.setExponent(comp.getExponent());

+			return res;

+		} else {

+			DefinedUnit unit = (DefinedUnit) comp.getUnit();

+			String u = unit.getValue().getUnit();

+			if (unit.isSpecial()) {

+				if (!handlers.exists(unit.getCode()))

+					throw new UOMoRuntimeException("Not handled yet (special unit)"); //$NON-NLS-1$

+				else {

+					u = handlers.get(unit.getCode()).getUnits();

+					ctxt.multiplyValue(handlers.get(unit.getCode()).value());

+				}

+			} else

+				ctxt.multiplyValue(unit.getValue().value());

+			Term canonical = new ExpressionParser(model).parse(u);

+			if (canonical.hasComp() && !canonical.hasOp()

+					&& !canonical.hasTerm()) {

+				Component ret = convertComp(ctxt, canonical.getComp());

+				if (comp.getExponent() == 1)

+					return ret;

+				else if (ret instanceof Factor) {

+					((Factor) ret).setValue(comp.getExponent()

+							+ ((Factor) ret).getValue());

+					return ret;

+				} else if (ret instanceof Symbol) {

+					((Symbol) ret).setExponent(comp.getExponent()

+							* ((Symbol) ret).getExponent());

+					return ret;

+				} else if (ret instanceof Term) {

+					applyExponent((Term) ret, comp.getExponent());

+					return ret;

+				} else

+					throw new UOMoRuntimeException("unknown component type " //$NON-NLS-1$

+							+ comp.getClass().toString());

+			} else {

+				Canonical t1 = convertTerm(canonical);

+				Term ret = t1.getUnit();

+				if (comp.getExponent() == -1 && ret.hasComp() && ret.hasOp()

+						&& ret.hasTerm() && ret.getTerm().hasComp()

+						&& !ret.getTerm().hasOp() && !ret.getTerm().hasTerm()) {

+					Component t = ret.getTerm().getComp();

+					ret.getTerm().setComp(ret.getComp());

+					ret.setComp(t);

+					ctxt.divideValue(t1.getValue());

+					return ret;

+				} else if (comp.getExponent() != 1) {

+					ctxt.multiplyValue(t1.getValue());

+					// what we have to do is push the exponent into the all the

+					// symbols contained herein

+					applyExponent(ret, comp.getExponent());

+					return ret;

+				} else {

+					ctxt.multiplyValue(t1.getValue());

+					return ret;

+				}

+			}

+		}

+	}

+

+	private void applyExponent(Term term, int exponent) {

+		if (term == null)

+			return;

+		if (term.hasComp()) {

+			if (term.getComp() instanceof Term) {

+				applyExponent((Term) term.getComp(), exponent);

+			} else if (term.getComp() instanceof Symbol) {

+				Symbol sym = (Symbol) term.getComp();

+				sym.setExponent(sym.getExponent() * exponent);

+			}

+

+		}

+		applyExponent(term.getTerm(), exponent);

+	}

+

+	public UnitConverter concatenate(UnitConverter converter) {

+		return compound.concatenate(converter);

+	}

+

+	public double convert(double value) {

+		return compound.convert(value);

+	}

+

+	public BigDecimal convert(BigDecimal value, MathContext ctx)

+			throws ArithmeticException {

+		return compound.convert(value, ctx);

+	}

+

+	public List<UnitConverter> getCompoundConverters() {

+		final List<UnitConverter> compound = new ArrayList<UnitConverter>();

+		compound.add(this);

+		return compound;

+	}

+

+	public UnitConverter inverse() {

+		return compound.inverse();

+	}

+

+	public boolean isIdentity() {

+		return false;

+	}

+

+	public boolean isLinear() {

+		return false;

+	}

+

+	public Number convert(Number value) {

+		return compound.convert(value);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/UcumEssenceService.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/UcumEssenceService.java
index dbcec29..73d1c96 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/UcumEssenceService.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/impl/UcumEssenceService.java
@@ -1,377 +1,377 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2014 Werner Keil, Creative Arts & Technologies. 
- * Crown Copyright (c) 2006, 2008, Copyright (c) 2006, 2008 Kestral Computing P/L.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing P/L - initial implementation
- *    Werner Keil - fixes and improvements
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.impl;
-
-import static org.eclipse.uomo.core.impl.OutputHelper.println;
-
-import java.io.File;
-import java.io.InputStream;
-import java.math.BigDecimal;
-import java.math.MathContext;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.uomo.core.UOMoRuntimeException;
-import org.eclipse.uomo.core.impl.CodeValuePair;
-import org.eclipse.uomo.ucum.UcumService;
-import org.eclipse.uomo.ucum.expression.Symbol;
-import org.eclipse.uomo.ucum.expression.Term;
-import org.eclipse.uomo.ucum.model.BaseUnit;
-import org.eclipse.uomo.ucum.model.Concept;
-import org.eclipse.uomo.ucum.model.ConceptKind;
-import org.eclipse.uomo.ucum.model.DefinedUnit;
-import org.eclipse.uomo.ucum.model.UcumModel;
-import org.eclipse.uomo.ucum.parsers.DefinitionParser;
-import org.eclipse.uomo.ucum.parsers.ExpressionComposer;
-import org.eclipse.uomo.ucum.parsers.ExpressionParser;
-import org.eclipse.uomo.ucum.parsers.FormalStructureComposer;
-import org.eclipse.uomo.ucum.special.SpecialUnitHandler;
-import org.eclipse.uomo.ucum.special.SpecialUnitRegistry;
-import org.eclipse.uomo.util.Registry;
-
-/**
- * implements UCUM services. Applications must provide a copy of
- * ucum-essence.xml as either a stream or a file name to create the services.
- * 
- * the provided ucum-essence.xml must be released on 25 Apr 2008 or more recent.
- * Note that if the ucum-essence.xml file does not contain a release date on an
- * attribute of the root element, it is not more recent than this date (Gunther
- * added it on this date for this usage, thanks)
- * 
- * @author Grahame Grieve
- * @author Werner Keil
- */
-public class UcumEssenceService implements UcumService {
-
-	/**
-	 * UCUM ID
-	 */
-	public static final String UCUM_OID = "2.16.840.1.113883.6.8";
-
-	private final UcumModel model;
-	@SuppressWarnings("rawtypes")
-	private final Registry<SpecialUnitHandler> handlers = new SpecialUnitRegistry();
-
-	/**
-	 * Create an instance of Ucum services. Stream must point to a valid
-	 * ucum-essence file (see class documentation)
-	 */
-	public UcumEssenceService(InputStream stream) throws UOMoRuntimeException {
-		super();
-		assert stream != null : paramError("factory", "stream",
-				"must not be null");
-		try {
-			model = new DefinitionParser().parse(stream);
-		} catch (Exception e) {
-			throw new UOMoRuntimeException(e);
-		}
-	}
-
-	/**
-	 * Create an instance of Ucum services. filename must point to a valid
-	 * ucum-essence file (see class documentation)
-	 */
-	public UcumEssenceService(String filename) throws UOMoRuntimeException {
-		super();
-		assert new File(filename).exists() : paramError("factory", "file",
-				"must exist");
-		try {
-			model = new DefinitionParser().parse(filename);
-		} catch (Exception e) {
-			throw new UOMoRuntimeException(e);
-		}
-	}
-
-	private String paramError(String method, String param, String msg) {
-		return getClass().getName() + "." + method + "." + param
-				+ " is not acceptable: " + msg;
-	}
-
-	public UcumVersionDetails ucumIdentification() {
-		return new UcumVersionDetails(model.getRevisionDate(),
-				model.getVersion());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.uomo.ucum.UcumServiceEx#getModel()
-	 */
-	public UcumModel getModel() {
-		return model;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.uomo.ucum.UcumServiceEx#search(org.eclipse.uomo.ucum.model.
-	 * ConceptKind, java.lang.String, boolean)
-	 */
-	public List<Concept> search(ConceptKind kind, String text, boolean isRegex) {
-		assert checkStringParam(text) : paramError("search", "text",
-				"must not be null or empty");
-		return new SearchImpl().doSearch(model, kind, text, isRegex);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.uomo.ucum.UcumService#validateUCUM()
-	 */
-	public List<String> validateUCUM() {
-		return new UcumValidator(model, handlers).validate();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.uomo.ucum.UcumService#getProperties()
-	 */
-	public Set<String> getProperties() {
-		Set<String> result = new HashSet<String>();
-		for (DefinedUnit unit : model.getDefinedUnits()) {
-			result.add(unit.getProperty());
-		}
-		for (BaseUnit unit : model.getBaseUnits()) {
-			result.add(unit.getProperty());
-		}
-		return result;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ohf.ucum.UcumServiceEx#validate(java.lang.String)
-	 */
-	public String validate(String unit) {
-		assert unit != null : paramError("validate", "unit", "must not be null");
-		try {
-			new ExpressionParser(model).parse(unit);
-			return null;
-		} catch (UOMoRuntimeException e) {
-			return e.getMessage();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ohf.ucum.UcumServiceEx#validateInProperty(java.lang.String,
-	 * java.lang.String)
-	 */
-	public String validateInProperty(String unit, String property) {
-		assert checkStringParam(unit) : paramError("validate", "unit",
-				"must not be null or empty");
-		assert checkStringParam(property) : paramError("validateInProperty",
-				"property", "must not be null or empty");
-		try {
-			Term term = new ExpressionParser(model).parse(unit);
-			Canonical can = new UcumConverter(model, handlers).convert(term);
-			term = can.getUnit();
-			String cu = new ExpressionComposer().compose(term);
-			if (term.hasComp() && !term.hasOp()
-					&& term.getComp() instanceof Symbol) {
-				Symbol sym = (Symbol) term.getComp();
-				if (sym.getExponent() == 1 && sym.getUnit() instanceof BaseUnit) {
-					BaseUnit b = (BaseUnit) sym.getUnit();
-					if (property.equals(b.getProperty()))
-						return null;
-					else
-						return "unit " + unit + " is of the property type "
-								+ b.getProperty() + " (" + cu + "), not "
-								+ property + " as required.";
-				}
-			}
-			// defined special case
-			if ("concentration".equals(property)
-					&& ("g/L".equals(cu) || "mol/L".equals(cu)))
-				return null;
-
-			return "unit " + unit + " has the base units " + cu
-					+ ", and are not from the property " + property
-					+ " as required.";
-		} catch (UOMoRuntimeException e) {
-			return e.getMessage();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ohf.ucum.UcumServiceEx#validateCanonicalUnits(java.lang.String
-	 * , java.lang.String)
-	 */
-	public String validateCanonicalUnits(String unit, String canonical) {
-		assert checkStringParam(unit) : paramError("validate", "unit",
-				"must not be null or empty");
-		assert checkStringParam(canonical) : paramError(
-				"validateCanonicalUnits", "canonical",
-				"must not be null or empty");
-		try {
-			Term term = new ExpressionParser(model).parse(unit);
-			Canonical can = new UcumConverter(model, handlers).convert(term);
-			term = can.getUnit();
-			String cu = new ExpressionComposer().compose(term);
-			if (!canonical.equals(cu))
-				return "unit " + unit + " has the base units " + cu + ", not "
-						+ canonical + " as required.";
-			return null;
-		} catch (UOMoRuntimeException e) {
-			return e.getMessage();
-		}
-	}
-
-	/**
-	 * given a unit, return a formal description of what the units stand for
-	 * using full names
-	 * 
-	 * @param units
-	 *            the unit code
-	 * @return formal description
-	 * @throws UOMoRuntimeException
-	 */
-	public String analyse(String unit) throws UOMoRuntimeException {
-		assert checkStringParam(unit) : paramError("analyse", "unit",
-				"must not be null or empty");
-		Term term = new ExpressionParser(model).parse(unit);
-		return new FormalStructureComposer().compose(term);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ohf.ucum.UcumServiceEx#getCanonicalUnits(java.lang.String)
-	 */
-	public String getCanonicalUnits(String unit) throws UOMoRuntimeException {
-		assert checkStringParam(unit) : paramError("getCanonicalUnits", "unit",
-				"must not be null or empty");
-		try {
-			Term term = new ExpressionParser(model).parse(unit);
-			term = new UcumConverter(model, handlers).convert(term).getUnit();
-			return new ExpressionComposer().compose(term);
-		} catch (RuntimeException e) {
-			throw new UOMoRuntimeException("Error processing " + unit + ": "
-					+ e.getMessage(), e);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.uomo.ucum.UcumServiceEx#getDefinedForms(java.lang.String)
-	 */
-	public List<DefinedUnit> getDefinedForms(String code)
-			throws UOMoRuntimeException {
-		assert checkStringParam(code) : paramError("getDefinedForms", "code",
-				"must not be null or empty");
-		List<DefinedUnit> result = new ArrayList<DefinedUnit>();
-		BaseUnit base = model.getBaseUnit(code);
-		if (base != null) {
-			for (DefinedUnit unit : model.getDefinedUnits()) {
-				if (!unit.isSpecial()
-						&& code.equals(getCanonicalUnits(unit.getCode())))
-					result.add(unit);
-			}
-		}
-		return result;
-	}
-
-	private boolean checkStringParam(String s) {
-		return s != null && !s.equals("");
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ohf.ucum.UcumServiceEx#getCanonicalForm(org.eclipse.ohf.ucum
-	 * .UcumEssenceService.Pair)
-	 */
-	public CodeValuePair<Number, String> getCanonicalForm(CodeValuePair<Number, String> value)
-			throws UOMoRuntimeException {
-		assert value != null : paramError("getCanonicalForm", "value",
-				"must not be null");
-		assert checkStringParam(value.getCode()) : paramError(
-				"getCanonicalForm", "value.code", "must not be null or empty");
-
-		Term term = new ExpressionParser(model).parse(value.getCode());
-		Canonical c = new UcumConverter(model, handlers).convert(term);
-		if (value.getValue() == null)
-			return new CodeValuePair<Number, String>(null,
-					new ExpressionComposer().compose(c.getUnit()));
-		else
-			return new CodeValuePair<Number, String>(
-					((BigDecimal) value.getValue()).multiply(c.getValue()),
-					new ExpressionComposer().compose(c.getUnit()));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.uomo.ucum.UcumServiceEx#convert(java.lang.Number,
-	 * java.lang.String, java.lang.String)
-	 */
-	public Number convert(final Number value, String sourceUnit, String destUnit)
-			throws UOMoRuntimeException {
-		assert value != null : paramError("convert", "value",
-				"must not be null");
-		assert checkStringParam(sourceUnit) : paramError("convert",
-				"sourceUnit", "must not be null or empty");
-		assert checkStringParam(destUnit) : paramError("convert", "destUnit",
-				"must not be null or empty");
-
-		if (sourceUnit.equals(destUnit))
-			return value;
-
-		Canonical src = new UcumConverter(model, handlers)
-				.convert(new ExpressionParser(model).parse(sourceUnit));
-		Canonical dst = new UcumConverter(model, handlers)
-				.convert(new ExpressionParser(model).parse(destUnit));
-		String s = new ExpressionComposer().compose(src.getUnit());
-		String d = new ExpressionComposer().compose(dst.getUnit());
-		if (!s.equals(d))
-			throw new UOMoRuntimeException("Unable to convert between units "
-					+ sourceUnit + " and " + destUnit
-					+ " as they do not have matching canonical forms (" + s
-					+ " and " + d + " respectively)");
-		final BigDecimal decValue = (BigDecimal) value;
-		final BigDecimal canValue = decValue.multiply(src.getValue());
-		final BigDecimal result = canValue.divide(dst.getValue(), new MathContext(25));
-		println(decValue.toPlainString() + sourceUnit + " =("
-				+ src.getValue().toPlainString() + ")= "
-				+ canValue.toPlainString() + s + " =("
-				+ dst.getValue().toPlainString() + ")= "
-				+ result);
-		return result;
-	}
-
-	public CodeValuePair<Number, String> multiply(CodeValuePair<Number, String> o1,
-			CodeValuePair<Number, String> o2) {
-		// Term term = new ExpressionParser(model).parse(o1.getCode());
-		// Canonical c = new Converter(model, handlers).convert(term);
-		return new CodeValuePair<Number, String>(
-				((BigDecimal) o1.getValue()).multiply((BigDecimal) o2
-						.getValue()),
-				// new ExpressionComposer().compose(c.getUnit()));
-				o1.getCode() + "." + o2.getCode());
-	}
-
-}
+/*******************************************************************************

+ * Copyright (c) 2010, 2014 Werner Keil, Creative Arts & Technologies. 

+ * Crown Copyright (c) 2006, 2008, Copyright (c) 2006, 2008 Kestral Computing P/L.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing P/L - initial implementation

+ *    Werner Keil - fixes and improvements

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.impl;

+

+import static org.eclipse.uomo.core.impl.OutputHelper.println;

+

+import java.io.File;

+import java.io.InputStream;

+import java.math.BigDecimal;

+import java.math.MathContext;

+import java.util.ArrayList;

+import java.util.HashSet;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.uomo.core.UOMoRuntimeException;

+import org.eclipse.uomo.core.impl.CodeValuePair;

+import org.eclipse.uomo.ucum.UcumService;

+import org.eclipse.uomo.ucum.expression.Symbol;

+import org.eclipse.uomo.ucum.expression.Term;

+import org.eclipse.uomo.ucum.model.BaseUnit;

+import org.eclipse.uomo.ucum.model.Concept;

+import org.eclipse.uomo.ucum.model.ConceptKind;

+import org.eclipse.uomo.ucum.model.DefinedUnit;

+import org.eclipse.uomo.ucum.model.UcumModel;

+import org.eclipse.uomo.ucum.parsers.DefinitionParser;

+import org.eclipse.uomo.ucum.parsers.ExpressionComposer;

+import org.eclipse.uomo.ucum.parsers.ExpressionParser;

+import org.eclipse.uomo.ucum.parsers.FormalStructureComposer;

+import org.eclipse.uomo.ucum.special.SpecialUnitHandler;

+import org.eclipse.uomo.ucum.special.SpecialUnitRegistry;

+import org.eclipse.uomo.util.Registry;

+

+/**

+ * implements UCUM services. Applications must provide a copy of

+ * ucum-essence.xml as either a stream or a file name to create the services.

+ * 

+ * the provided ucum-essence.xml must be released on 25 Apr 2008 or more recent.

+ * Note that if the ucum-essence.xml file does not contain a release date on an

+ * attribute of the root element, it is not more recent than this date (Gunther

+ * added it on this date for this usage, thanks)

+ * 

+ * @author Grahame Grieve

+ * @author Werner Keil

+ */

+public class UcumEssenceService implements UcumService {

+

+	/**

+	 * UCUM ID

+	 */

+	public static final String UCUM_OID = "2.16.840.1.113883.6.8";

+

+	private final UcumModel model;

+	@SuppressWarnings("rawtypes")

+	private final Registry<SpecialUnitHandler> handlers = new SpecialUnitRegistry();

+

+	/**

+	 * Create an instance of Ucum services. Stream must point to a valid

+	 * ucum-essence file (see class documentation)

+	 */

+	public UcumEssenceService(InputStream stream) throws UOMoRuntimeException {

+		super();

+		assert stream != null : paramError("factory", "stream",

+				"must not be null");

+		try {

+			model = new DefinitionParser().parse(stream);

+		} catch (Exception e) {

+			throw new UOMoRuntimeException(e);

+		}

+	}

+

+	/**

+	 * Create an instance of Ucum services. filename must point to a valid

+	 * ucum-essence file (see class documentation)

+	 */

+	public UcumEssenceService(String filename) throws UOMoRuntimeException {

+		super();

+		assert new File(filename).exists() : paramError("factory", "file",

+				"must exist");

+		try {

+			model = new DefinitionParser().parse(filename);

+		} catch (Exception e) {

+			throw new UOMoRuntimeException(e);

+		}

+	}

+

+	private String paramError(String method, String param, String msg) {

+		return getClass().getName() + "." + method + "." + param

+				+ " is not acceptable: " + msg;

+	}

+

+	public UcumVersionDetails ucumIdentification() {

+		return new UcumVersionDetails(model.getRevisionDate(),

+				model.getVersion());

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see org.eclipse.uomo.ucum.UcumServiceEx#getModel()

+	 */

+	public UcumModel getModel() {

+		return model;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.eclipse.uomo.ucum.UcumServiceEx#search(org.eclipse.uomo.ucum.model.

+	 * ConceptKind, java.lang.String, boolean)

+	 */

+	public List<Concept> search(ConceptKind kind, String text, boolean isRegex) {

+		assert checkStringParam(text) : paramError("search", "text",

+				"must not be null or empty");

+		return new SearchImpl().doSearch(model, kind, text, isRegex);

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see org.eclipse.uomo.ucum.UcumService#validateUCUM()

+	 */

+	public List<String> validateUCUM() {

+		return new UcumValidator(model, handlers).validate();

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see org.eclipse.uomo.ucum.UcumService#getProperties()

+	 */

+	public Set<String> getProperties() {

+		Set<String> result = new HashSet<String>();

+		for (DefinedUnit unit : model.getDefinedUnits()) {

+			result.add(unit.getProperty());

+		}

+		for (BaseUnit unit : model.getBaseUnits()) {

+			result.add(unit.getProperty());

+		}

+		return result;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see org.eclipse.ohf.ucum.UcumServiceEx#validate(java.lang.String)

+	 */

+	public String validate(String unit) {

+		assert unit != null : paramError("validate", "unit", "must not be null");

+		try {

+			new ExpressionParser(model).parse(unit);

+			return null;

+		} catch (UOMoRuntimeException e) {

+			return e.getMessage();

+		}

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.eclipse.ohf.ucum.UcumServiceEx#validateInProperty(java.lang.String,

+	 * java.lang.String)

+	 */

+	public String validateInProperty(String unit, String property) {

+		assert checkStringParam(unit) : paramError("validate", "unit",

+				"must not be null or empty");

+		assert checkStringParam(property) : paramError("validateInProperty",

+				"property", "must not be null or empty");

+		try {

+			Term term = new ExpressionParser(model).parse(unit);

+			Canonical can = new UcumConverter(model, handlers).convert(term);

+			term = can.getUnit();

+			String cu = new ExpressionComposer().compose(term);

+			if (term.hasComp() && !term.hasOp()

+					&& term.getComp() instanceof Symbol) {

+				Symbol sym = (Symbol) term.getComp();

+				if (sym.getExponent() == 1 && sym.getUnit() instanceof BaseUnit) {

+					BaseUnit b = (BaseUnit) sym.getUnit();

+					if (property.equals(b.getProperty()))

+						return null;

+					else

+						return "unit " + unit + " is of the property type "

+								+ b.getProperty() + " (" + cu + "), not "

+								+ property + " as required.";

+				}

+			}

+			// defined special case

+			if ("concentration".equals(property)

+					&& ("g/L".equals(cu) || "mol/L".equals(cu)))

+				return null;

+

+			return "unit " + unit + " has the base units " + cu

+					+ ", and are not from the property " + property

+					+ " as required.";

+		} catch (UOMoRuntimeException e) {

+			return e.getMessage();

+		}

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.eclipse.ohf.ucum.UcumServiceEx#validateCanonicalUnits(java.lang.String

+	 * , java.lang.String)

+	 */

+	public String validateCanonicalUnits(String unit, String canonical) {

+		assert checkStringParam(unit) : paramError("validate", "unit",

+				"must not be null or empty");

+		assert checkStringParam(canonical) : paramError(

+				"validateCanonicalUnits", "canonical",

+				"must not be null or empty");

+		try {

+			Term term = new ExpressionParser(model).parse(unit);

+			Canonical can = new UcumConverter(model, handlers).convert(term);

+			term = can.getUnit();

+			String cu = new ExpressionComposer().compose(term);

+			if (!canonical.equals(cu))

+				return "unit " + unit + " has the base units " + cu + ", not "

+						+ canonical + " as required.";

+			return null;

+		} catch (UOMoRuntimeException e) {

+			return e.getMessage();

+		}

+	}

+

+	/**

+	 * given a unit, return a formal description of what the units stand for

+	 * using full names

+	 * 

+	 * @param units

+	 *            the unit code

+	 * @return formal description

+	 * @throws UOMoRuntimeException

+	 */

+	public String analyse(String unit) throws UOMoRuntimeException {

+		assert checkStringParam(unit) : paramError("analyse", "unit",

+				"must not be null or empty");

+		Term term = new ExpressionParser(model).parse(unit);

+		return new FormalStructureComposer().compose(term);

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.eclipse.ohf.ucum.UcumServiceEx#getCanonicalUnits(java.lang.String)

+	 */

+	public String getCanonicalUnits(String unit) throws UOMoRuntimeException {

+		assert checkStringParam(unit) : paramError("getCanonicalUnits", "unit",

+				"must not be null or empty");

+		try {

+			Term term = new ExpressionParser(model).parse(unit);

+			term = new UcumConverter(model, handlers).convert(term).getUnit();

+			return new ExpressionComposer().compose(term);

+		} catch (RuntimeException e) {

+			throw new UOMoRuntimeException("Error processing " + unit + ": "

+					+ e.getMessage(), e);

+		}

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.eclipse.uomo.ucum.UcumServiceEx#getDefinedForms(java.lang.String)

+	 */

+	public List<DefinedUnit> getDefinedForms(String code)

+			throws UOMoRuntimeException {

+		assert checkStringParam(code) : paramError("getDefinedForms", "code",

+				"must not be null or empty");

+		List<DefinedUnit> result = new ArrayList<DefinedUnit>();

+		BaseUnit base = model.getBaseUnit(code);

+		if (base != null) {

+			for (DefinedUnit unit : model.getDefinedUnits()) {

+				if (!unit.isSpecial()

+						&& code.equals(getCanonicalUnits(unit.getCode())))

+					result.add(unit);

+			}

+		}

+		return result;

+	}

+

+	private boolean checkStringParam(String s) {

+		return s != null && !s.equals("");

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.eclipse.ohf.ucum.UcumServiceEx#getCanonicalForm(org.eclipse.ohf.ucum

+	 * .UcumEssenceService.Pair)

+	 */

+	public CodeValuePair<Number, String> getCanonicalForm(CodeValuePair<Number, String> value)

+			throws UOMoRuntimeException {

+		assert value != null : paramError("getCanonicalForm", "value",

+				"must not be null");

+		assert checkStringParam(value.getCode()) : paramError(

+				"getCanonicalForm", "value.code", "must not be null or empty");

+

+		Term term = new ExpressionParser(model).parse(value.getCode());

+		Canonical c = new UcumConverter(model, handlers).convert(term);

+		if (value.getValue() == null)

+			return new CodeValuePair<Number, String>(null,

+					new ExpressionComposer().compose(c.getUnit()));

+		else

+			return new CodeValuePair<Number, String>(

+					((BigDecimal) value.getValue()).multiply(c.getValue()),

+					new ExpressionComposer().compose(c.getUnit()));

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see org.eclipse.uomo.ucum.UcumServiceEx#convert(java.lang.Number,

+	 * java.lang.String, java.lang.String)

+	 */

+	public Number convert(final Number value, String sourceUnit, String destUnit)

+			throws UOMoRuntimeException {

+		assert value != null : paramError("convert", "value",

+				"must not be null");

+		assert checkStringParam(sourceUnit) : paramError("convert",

+				"sourceUnit", "must not be null or empty");

+		assert checkStringParam(destUnit) : paramError("convert", "destUnit",

+				"must not be null or empty");

+

+		if (sourceUnit.equals(destUnit))

+			return value;

+

+		Canonical src = new UcumConverter(model, handlers)

+				.convert(new ExpressionParser(model).parse(sourceUnit));

+		Canonical dst = new UcumConverter(model, handlers)

+				.convert(new ExpressionParser(model).parse(destUnit));

+		String s = new ExpressionComposer().compose(src.getUnit());

+		String d = new ExpressionComposer().compose(dst.getUnit());

+		if (!s.equals(d))

+			throw new UOMoRuntimeException("Unable to convert between units "

+					+ sourceUnit + " and " + destUnit

+					+ " as they do not have matching canonical forms (" + s

+					+ " and " + d + " respectively)");

+		final BigDecimal decValue = (BigDecimal) value;

+		final BigDecimal canValue = decValue.multiply(src.getValue());

+		final BigDecimal result = canValue.divide(dst.getValue(), new MathContext(25));

+		println(decValue.toPlainString() + sourceUnit + " =("

+				+ src.getValue().toPlainString() + ")= "

+				+ canValue.toPlainString() + s + " =("

+				+ dst.getValue().toPlainString() + ")= "

+				+ result);

+		return result;

+	}

+

+	public CodeValuePair<Number, String> multiply(CodeValuePair<Number, String> o1,

+			CodeValuePair<Number, String> o2) {

+		// Term term = new ExpressionParser(model).parse(o1.getCode());

+		// Canonical c = new Converter(model, handlers).convert(term);

+		return new CodeValuePair<Number, String>(

+				((BigDecimal) o1.getValue()).multiply((BigDecimal) o2

+						.getValue()),

+				// new ExpressionComposer().compose(c.getUnit()));

+				o1.getCode() + "." + o2.getCode());

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/internal/Messages.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/internal/Messages.java
index 43520d1..e11aaf7 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/internal/Messages.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/internal/Messages.java
@@ -1,29 +1,29 @@
-package org.eclipse.uomo.ucum.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-	private static final String BUNDLE_NAME = Messages.class.getPackage().getName() + ".messages"; //$NON-NLS-1$
-	public static String DefinitionParser_0;
-	public static String DefinitionParser_2;
-	public static String DefinitionParser_29;
-	public static String DefinitionParser_3;
-	public static String DefinitionParser_30;
-	public static String DefinitionParser_DateFormat;
-	public static String DefinitionParser_54;
-	public static String DefinitionParser_55;
-	public static String DefinitionParser_56;
-	public static String DefinitionParser_57;
-	public static String DefinitionParser_58;
-	public static String DefinitionParser_59;
-	public static String DefinitionParser_60;
-	public static String DefinitionParser_8;
-	public static String DefinitionParser_9;
-	static {
-		// initialize resource bundle
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-
-	private Messages() {
-	}
-}
+package org.eclipse.uomo.ucum.internal;

+

+import org.eclipse.osgi.util.NLS;

+

+public class Messages extends NLS {

+	private static final String BUNDLE_NAME = Messages.class.getPackage().getName() + ".messages"; //$NON-NLS-1$

+	public static String DefinitionParser_0;

+	public static String DefinitionParser_2;

+	public static String DefinitionParser_29;

+	public static String DefinitionParser_3;

+	public static String DefinitionParser_30;

+	public static String DefinitionParser_DateFormat;

+	public static String DefinitionParser_54;

+	public static String DefinitionParser_55;

+	public static String DefinitionParser_56;

+	public static String DefinitionParser_57;

+	public static String DefinitionParser_58;

+	public static String DefinitionParser_59;

+	public static String DefinitionParser_60;

+	public static String DefinitionParser_8;

+	public static String DefinitionParser_9;

+	static {

+		// initialize resource bundle

+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);

+	}

+

+	private Messages() {

+	}

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Concept.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Concept.java
index d41a9ed..6db24b0 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Concept.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Concept.java
@@ -1,127 +1,127 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2012, Copyright (c) 2006, 2008 Kestral Computing P/L.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing P/L - initial implementation
- *    Werner Keil - updates and consolidation with core
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.uomo.core.ICode;
-import org.eclipse.uomo.core.IDescription;
-import org.eclipse.uomo.core.INames;
-import org.eclipse.uomo.core.ISymbol;
-
-public class Concept implements ICode<String>, IDescription, ISymbol, INames {
-
-	private final ConceptKind kind;
-	/**
-	 * case sensitive code for this concept
-	 */
-	private String code;
-	
-	/**
-	 * case insensitive (UPPERCASE) code for this concept
-	 */
-	private String codeUC;
-	
-	/**
-	 * print symbol for this code 
-	 */
-	private String printSymbol;
-	
-	/**
-	 * names for the concept
-	 */
-	private List<String> names = new ArrayList<String>();
-	
-	
-	/**
-	 * @param code
-	 * @param codeUC
-	 */
-	public Concept(ConceptKind kind, String code, String codeUC) {
-		super();
-		this.kind = kind;
-		this.code = code;
-		this.codeUC = codeUC;
-	}
-
-	/**
-	 * @return the code
-	 */
-	public String getCode() {
-		return code;
-	}
-
-	/**
-	 * @param code the code to set
-	 */
-	public void setCode(String code) {
-		this.code = code;
-	}
-
-	/**
-	 * @return the codeUC
-	 */
-	public String getCodeUC() {
-		return codeUC;
-	}
-
-	/**
-	 * @param codeUC the codeUC to set
-	 */
-	public void setCodeUC(String codeUC) {
-		this.codeUC = codeUC;
-	}
-
-	/**
-	 * @return the printSymbol
-	 */
-	public String getPrintSymbol() {
-		return printSymbol;
-	}
-
-	/**
-	 * @param printSymbol the printSymbol to set
-	 */
-	public void setPrintSymbol(String printSymbol) {
-		this.printSymbol = printSymbol;
-	}
-	
-	@Override
-	public String getSymbol() {
-		return getPrintSymbol();
-	}
-
-	/**
-	 * @return the names
-	 */
-	public List<String> getNames() {
-		return names;
-	}
-
-	/**
-	 * @return the kind
-	 */
-	public ConceptKind getKind() {
-		return kind;
-	}
-
-	public String getDescription() {
-		return  kind.toString().toLowerCase()+" "+code+" ('"+names.get(0)+"')"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-	
-	@Override
-	public String toString() {
-		return this.getCode() + " = " + getDescription(); //$NON-NLS-1$
-	}
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2012, Copyright (c) 2006, 2008 Kestral Computing P/L.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing P/L - initial implementation

+ *    Werner Keil - updates and consolidation with core

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.model;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.uomo.core.ICode;

+import org.eclipse.uomo.core.IDescription;

+import org.eclipse.uomo.core.INames;

+import org.eclipse.uomo.core.ISymbol;

+

+public class Concept implements ICode<String>, IDescription, ISymbol, INames {

+

+	private final ConceptKind kind;

+	/**

+	 * case sensitive code for this concept

+	 */

+	private String code;

+	

+	/**

+	 * case insensitive (UPPERCASE) code for this concept

+	 */

+	private String codeUC;

+	

+	/**

+	 * print symbol for this code 

+	 */

+	private String printSymbol;

+	

+	/**

+	 * names for the concept

+	 */

+	private List<String> names = new ArrayList<String>();

+	

+	

+	/**

+	 * @param code

+	 * @param codeUC

+	 */

+	public Concept(ConceptKind kind, String code, String codeUC) {

+		super();

+		this.kind = kind;

+		this.code = code;

+		this.codeUC = codeUC;

+	}

+

+	/**

+	 * @return the code

+	 */

+	public String getCode() {

+		return code;

+	}

+

+	/**

+	 * @param code the code to set

+	 */

+	public void setCode(String code) {

+		this.code = code;

+	}

+

+	/**

+	 * @return the codeUC

+	 */

+	public String getCodeUC() {

+		return codeUC;

+	}

+

+	/**

+	 * @param codeUC the codeUC to set

+	 */

+	public void setCodeUC(String codeUC) {

+		this.codeUC = codeUC;

+	}

+

+	/**

+	 * @return the printSymbol

+	 */

+	public String getPrintSymbol() {

+		return printSymbol;

+	}

+

+	/**

+	 * @param printSymbol the printSymbol to set

+	 */

+	public void setPrintSymbol(String printSymbol) {

+		this.printSymbol = printSymbol;

+	}

+	

+	@Override

+	public String getSymbol() {

+		return getPrintSymbol();

+	}

+

+	/**

+	 * @return the names

+	 */

+	public List<String> getNames() {

+		return names;

+	}

+

+	/**

+	 * @return the kind

+	 */

+	public ConceptKind getKind() {

+		return kind;

+	}

+

+	public String getDescription() {

+		return  kind.toString().toLowerCase()+" "+code+" ('"+names.get(0)+"')"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

+	}

+	

+	@Override

+	public String toString() {

+		return this.getCode() + " = " + getDescription(); //$NON-NLS-1$

+	}

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Prefix.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Prefix.java
index e6619ff..709ebbb 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Prefix.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Prefix.java
@@ -1,56 +1,56 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2008, Copyright (c) 2006, 2008 Kestral Computing P/L.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing P/L - initial implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.model;
-
-import java.math.BigDecimal;
-
-public class Prefix extends Concept {
-	
-	/**
-	 * value for the prefix.  
-	 */
-	private BigDecimal value; // 1^-24 through to 1^24
-
-	/**
-	 * @param code
-	 * @param codeUC
-	 */
-	public Prefix(String code, String codeUC) {
-		super(ConceptKind.PREFIX, code, codeUC);
-	}
-
-	/**
-	 * @return the index
-	 */
-	public Number getValue() {
-		return value;
-	}
-
-	/**
-	 * @param index the index to set
-	 */
-	public void setValue(BigDecimal index) {
-		this.value = index;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.ucum.model.Concept#getDescription()
-	 */
-	@Override
-	public String getDescription() {
-		return super.getDescription()+" = "+value.toEngineeringString();
-	}
-	
-	
-	
-
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2008, Copyright (c) 2006, 2008 Kestral Computing P/L.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing P/L - initial implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.model;

+

+import java.math.BigDecimal;

+

+public class Prefix extends Concept {

+	

+	/**

+	 * value for the prefix.  

+	 */

+	private BigDecimal value; // 1^-24 through to 1^24

+

+	/**

+	 * @param code

+	 * @param codeUC

+	 */

+	public Prefix(String code, String codeUC) {

+		super(ConceptKind.PREFIX, code, codeUC);

+	}

+

+	/**

+	 * @return the index

+	 */

+	public Number getValue() {

+		return value;

+	}

+

+	/**

+	 * @param index the index to set

+	 */

+	public void setValue(BigDecimal index) {

+		this.value = index;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.ucum.model.Concept#getDescription()

+	 */

+	@Override

+	public String getDescription() {

+		return super.getDescription()+" = "+value.toEngineeringString();

+	}

+	

+	

+	

+

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Value.java b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Value.java
index c7f492d..e79bd42 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Value.java
+++ b/bundles/org.eclipse.uomo.ucum/src/main/java/org/eclipse/uomo/ucum/model/Value.java
@@ -1,110 +1,110 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2011, Copyright (c) 2006, 2008 Kestral Computing P/L.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing P/L - initial implementation
- *    Werner Keil - Cleaning, unification with other UOMo parts and Unit-API
- *******************************************************************************/
-
-package org.eclipse.uomo.ucum.model;
-
-import java.math.BigDecimal;
-
-import org.eclipse.uomo.core.IDescription;
-import org.eclipse.uomo.core.IText;
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.unit.Unit;
-
-public class Value<Q extends Quantity<Q>> implements Quantity<Q>, IDescription, IText {
-	// TODO should use Quantity
-	// TODO make this a "real" unit, should be at least UcumUnit
-	private String unit;
-	private Unit<Q> realUnit;
-	private String unitUC;
-	
-	private BigDecimal value;
-	
-	private String text;
-
-	/**
-	 * @param unit
-	 * @param unitUC
-	 * @param value
-	 */
-	public Value(String unit, String unitUC, BigDecimal value) {
-		super();
-		this.unit = unit;
-		this.unitUC = unitUC;
-		this.value = value;
-	}
-
-	/**
-	 * @return the unit
-	 */
-	public String getUnit() {
-		return unit;
-	}
-
-	/**
-	 * @param unit the unit to set
-	 */
-	public void setUnit(String unit) {
-		this.unit = unit;
-	}
-
-	/**
-	 * @return the unitUC
-	 * @deprecated currently not used
-	 */
-	public String getUnitUC() {
-		return unitUC;
-	}
-
-	/**
-	 * @param unitUC the unitUC to set
-	 * @deprecated currently not used
-	 */
-	public void setUnitUC(String unitUC) {
-		this.unitUC = unitUC;
-	}
-
-	/**
-	 * @param value the value to set
-	 * @deprecated
-	 */
-	void setValue(BigDecimal value) {
-		this.value = value;
-	}
-
-	/**
-	 * @return the text
-	 */
-	public String getText() {
-		return text;
-	}
-
-	/**
-	 * @param text the text to set
-	 */
-	public void setText(String text) {
-		this.text = text;
-	}
-
-	public String getDescription() {
-		if (value == null)
-			return unit;
-		return value.toEngineeringString()+unit;
-	}
-
-	public Number value() {
-		return value;
-	}
-
-	public Unit<Q> unit() {
-		return realUnit;
-	}		
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2011, Copyright (c) 2006, 2008 Kestral Computing P/L.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing P/L - initial implementation

+ *    Werner Keil - Cleaning, unification with other UOMo parts and Unit-API

+ *******************************************************************************/

+

+package org.eclipse.uomo.ucum.model;

+

+import java.math.BigDecimal;

+

+import org.eclipse.uomo.core.IDescription;

+import org.eclipse.uomo.core.IText;

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.unit.Unit;

+

+public class Value<Q extends Quantity<Q>> implements Quantity<Q>, IDescription, IText {

+	// TODO should use Quantity

+	// TODO make this a "real" unit, should be at least UcumUnit

+	private String unit;

+	private Unit<Q> realUnit;

+	private String unitUC;

+	

+	private BigDecimal value;

+	

+	private String text;

+

+	/**

+	 * @param unit

+	 * @param unitUC

+	 * @param value

+	 */

+	public Value(String unit, String unitUC, BigDecimal value) {

+		super();

+		this.unit = unit;

+		this.unitUC = unitUC;

+		this.value = value;

+	}

+

+	/**

+	 * @return the unit

+	 */

+	public String getUnit() {

+		return unit;

+	}

+

+	/**

+	 * @param unit the unit to set

+	 */

+	public void setUnit(String unit) {

+		this.unit = unit;

+	}

+

+	/**

+	 * @return the unitUC

+	 * @deprecated currently not used

+	 */

+	public String getUnitUC() {

+		return unitUC;

+	}

+

+	/**

+	 * @param unitUC the unitUC to set

+	 * @deprecated currently not used

+	 */

+	public void setUnitUC(String unitUC) {

+		this.unitUC = unitUC;

+	}

+

+	/**

+	 * @param value the value to set

+	 * @deprecated

+	 */

+	void setValue(BigDecimal value) {

+		this.value = value;

+	}

+

+	/**

+	 * @return the text

+	 */

+	public String getText() {

+		return text;

+	}

+

+	/**

+	 * @param text the text to set

+	 */

+	public void setText(String text) {

+		this.text = text;

+	}

+

+	public String getDescription() {

+		if (value == null)

+			return unit;

+		return value.toEngineeringString()+unit;

+	}

+

+	public Number value() {

+		return value;

+	}

+

+	public Unit<Q> unit() {

+		return realUnit;

+	}		

+}

diff --git a/bundles/org.eclipse.uomo.ucum/src/main/resources/org/eclipse/uomo/ucum/internal/messages.properties b/bundles/org.eclipse.uomo.ucum/src/main/resources/org/eclipse/uomo/ucum/internal/messages.properties
index 2886089..a319bea 100644
--- a/bundles/org.eclipse.uomo.ucum/src/main/resources/org/eclipse/uomo/ucum/internal/messages.properties
+++ b/bundles/org.eclipse.uomo.ucum/src/main/resources/org/eclipse/uomo/ucum/internal/messages.properties
@@ -1,15 +1,15 @@
-DefinitionParser_0=Unable to process XML document
-DefinitionParser_2=Unable to process XML document: expected 'root' but found '
-DefinitionParser_29=Error reading 
-DefinitionParser_3='
-DefinitionParser_30=: 
-DefinitionParser_DateFormat=yyyy-MM-dd' 'HH:mm:ss' 'Z
-DefinitionParser_54=Unexpected content reading 
-DefinitionParser_55=Unexpected state looking for 
-DefinitionParser_56=: at 
-DefinitionParser_57=\  reading 
-DefinitionParser_58=Unexpected element looking for 
-DefinitionParser_59=: found 
-DefinitionParser_60=\  reading 
-DefinitionParser_8=Unexpected text 
-DefinitionParser_9=unknown element name 
+DefinitionParser_0=Unable to process XML document

+DefinitionParser_2=Unable to process XML document: expected 'root' but found '

+DefinitionParser_29=Error reading 

+DefinitionParser_3='

+DefinitionParser_30=: 

+DefinitionParser_DateFormat=yyyy-MM-dd' 'HH:mm:ss' 'Z

+DefinitionParser_54=Unexpected content reading 

+DefinitionParser_55=Unexpected state looking for 

+DefinitionParser_56=: at 

+DefinitionParser_57=\  reading 

+DefinitionParser_58=Unexpected element looking for 

+DefinitionParser_59=: found 

+DefinitionParser_60=\  reading 

+DefinitionParser_8=Unexpected text 

+DefinitionParser_9=unknown element name 

diff --git a/bundles/org.eclipse.uomo.ucum/ucum.antlr b/bundles/org.eclipse.uomo.ucum/ucum.antlr
index c68dd64..d164e59 100644
--- a/bundles/org.eclipse.uomo.ucum/ucum.antlr
+++ b/bundles/org.eclipse.uomo.ucum/ucum.antlr
@@ -1,23 +1,23 @@
-ucumExpr   :  DIVIDE expr
-           |  expr 
-           ;
-multiply   :  TIMES term
-           |  DIVIDE term
-           ;
-expr       :  term (multiply)*  
-           ;
-term       :  element (exponent)? (ANN)*
-           ;
-element    :  simpleUnit
-           |  LPAREN expr RPAREN
-           |  ANN
-           ;
-exponent   :  (SIGN)? DIGITS	// allow zero exponent?
-           ;
-simpleUnit :  prefix metricAtom // prefix is token from lexer
-           |  metricAtom  
-           |  nonMetricAtom	// token from lexer
-           |  DIGITS	// allow zero?
-           ;
-metricAtom :  baseUnit // token from lexer
+ucumExpr   :  DIVIDE expr

+           |  expr 

+           ;

+multiply   :  TIMES term

+           |  DIVIDE term

+           ;

+expr       :  term (multiply)*  

+           ;

+term       :  element (exponent)? (ANN)*

+           ;

+element    :  simpleUnit

+           |  LPAREN expr RPAREN

+           |  ANN

+           ;

+exponent   :  (SIGN)? DIGITS	// allow zero exponent?

+           ;

+simpleUnit :  prefix metricAtom // prefix is token from lexer

+           |  metricAtom  

+           |  nonMetricAtom	// token from lexer

+           |  DIGITS	// allow zero?

+           ;

+metricAtom :  baseUnit // token from lexer

            |  derivedMetricAtom // token from lexer
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.ui/.classpath b/bundles/org.eclipse.uomo.ui/.classpath
index 5925878..92b64c7 100644
--- a/bundles/org.eclipse.uomo.ui/.classpath
+++ b/bundles/org.eclipse.uomo.ui/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/main/resources/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/main/resources/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.ui/.gitignore b/bundles/org.eclipse.uomo.ui/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/bundles/org.eclipse.uomo.ui/.gitignore
+++ b/bundles/org.eclipse.uomo.ui/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/bundles/org.eclipse.uomo.ui/.project b/bundles/org.eclipse.uomo.ui/.project
index 1d754de..705268d 100644
--- a/bundles/org.eclipse.uomo.ui/.project
+++ b/bundles/org.eclipse.uomo.ui/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.ui</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.ui</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/org.eclipse.uomo.ui/.settings/.gitignore b/bundles/org.eclipse.uomo.ui/.settings/.gitignore
index 0924da4..c14d360 100644
--- a/bundles/org.eclipse.uomo.ui/.settings/.gitignore
+++ b/bundles/org.eclipse.uomo.ui/.settings/.gitignore
@@ -1 +1 @@
-/org.eclipse.m2e.core.prefs
+/org.eclipse.m2e.core.prefs

diff --git a/bundles/org.eclipse.uomo.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.ui/META-INF/MANIFEST.MF
index a8c84da..80adb2f 100644
--- a/bundles/org.eclipse.uomo.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.ui/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse UOMo
-Bundle-SymbolicName: org.eclipse.uomo.ui
-Bundle-Version: 0.7.0.qualifier
-Bundle-Vendor: Eclipse UOMo
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6,
- JavaSE-1.7
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: Eclipse UOMo

+Bundle-SymbolicName: org.eclipse.uomo.ui

+Bundle-Version: 0.7.0.qualifier

+Bundle-Vendor: Eclipse UOMo

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6,

+ JavaSE-1.7

diff --git a/bundles/org.eclipse.uomo.ui/about.ini b/bundles/org.eclipse.uomo.ui/about.ini
index 660e6a5..f7812cb 100644
--- a/bundles/org.eclipse.uomo.ui/about.ini
+++ b/bundles/org.eclipse.uomo.ui/about.ini
@@ -1,17 +1,17 @@
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%featureText
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=src/main/resources/uomo32.png
-
-# Property "appName" contains name of the application (translated)
-appName=%featureName
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-welcomePage=$nl$/welcome.xml
+# about.ini

+# contains information about a feature

+# java.io.Properties file (ISO 8859-1 with "\" escapes)

+# "%key" are externalized strings defined in about.properties

+# This file does not need to be translated.

+

+# Property "aboutText" contains blurb for "About" dialog (translated)

+aboutText=%featureText

+

+# Property "featureImage" contains path to feature image (32x32)

+featureImage=src/main/resources/uomo32.png

+

+# Property "appName" contains name of the application (translated)

+appName=%featureName

+

+# Property "welcomePage" contains path to welcome page (special XML-based format)

+welcomePage=$nl$/welcome.xml

diff --git a/bundles/org.eclipse.uomo.units.tests/.classpath b/bundles/org.eclipse.uomo.units.tests/.classpath
index 0b1bcf9..9bc33d3 100644
--- a/bundles/org.eclipse.uomo.units.tests/.classpath
+++ b/bundles/org.eclipse.uomo.units.tests/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.units.tests/.gitignore b/bundles/org.eclipse.uomo.units.tests/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/bundles/org.eclipse.uomo.units.tests/.gitignore
+++ b/bundles/org.eclipse.uomo.units.tests/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/bundles/org.eclipse.uomo.units.tests/.project b/bundles/org.eclipse.uomo.units.tests/.project
index 335f2a5..5657fb9 100644
--- a/bundles/org.eclipse.uomo.units.tests/.project
+++ b/bundles/org.eclipse.uomo.units.tests/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.units.tests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.units.tests</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/org.eclipse.uomo.units.tests/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.uomo.units.tests/.settings/org.eclipse.jdt.core.prefs
index c537b63..f287d53 100644
--- a/bundles/org.eclipse.uomo.units.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.uomo.units.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6

+org.eclipse.jdt.core.compiler.compliance=1.6

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.source=1.6

diff --git a/bundles/org.eclipse.uomo.units.tests/.settings/org.eclipse.m2e.core.prefs b/bundles/org.eclipse.uomo.units.tests/.settings/org.eclipse.m2e.core.prefs
index f897a7f..14b697b 100644
--- a/bundles/org.eclipse.uomo.units.tests/.settings/org.eclipse.m2e.core.prefs
+++ b/bundles/org.eclipse.uomo.units.tests/.settings/org.eclipse.m2e.core.prefs
@@ -1,4 +1,4 @@
-activeProfiles=
-eclipse.preferences.version=1
-resolveWorkspaceProjects=true
-version=1
+activeProfiles=

+eclipse.preferences.version=1

+resolveWorkspaceProjects=true

+version=1

diff --git a/bundles/org.eclipse.uomo.units.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.units.tests/META-INF/MANIFEST.MF
index ca6302e..38d452b 100644
--- a/bundles/org.eclipse.uomo.units.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.units.tests/META-INF/MANIFEST.MF
@@ -1,13 +1,13 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UoMO Units Tests
-Bundle-SymbolicName: org.eclipse.uomo.units.tests
-Bundle-Version: 0.7.0.qualifier
-Bundle-Vendor: Eclipse org
-Fragment-Host: org.eclipse.uomo.units;bundle-version="0.7.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.uomo.units,
- org.eclipse.uomo.units.impl,
- org.eclipse.uomo.units.impl.format,
- org.eclipse.uomo.units.impl.quantity
-Require-Bundle: org.junit;bundle-version="4.8.2"
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UoMO Units Tests

+Bundle-SymbolicName: org.eclipse.uomo.units.tests

+Bundle-Version: 0.7.0.qualifier

+Bundle-Vendor: Eclipse org

+Fragment-Host: org.eclipse.uomo.units;bundle-version="0.7.0"

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Export-Package: org.eclipse.uomo.units,

+ org.eclipse.uomo.units.impl,

+ org.eclipse.uomo.units.impl.format,

+ org.eclipse.uomo.units.impl.quantity

+Require-Bundle: org.junit;bundle-version="4.8.2"

diff --git a/bundles/org.eclipse.uomo.units.tests/build.properties b/bundles/org.eclipse.uomo.units.tests/build.properties
index ced5f40..c4e35e4 100644
--- a/bundles/org.eclipse.uomo.units.tests/build.properties
+++ b/bundles/org.eclipse.uomo.units.tests/build.properties
@@ -1,4 +1,4 @@
-source.. = src/
-output.. = target/classes
-bin.includes = META-INF/,\
-               .
+source.. = src/

+output.. = target/classes

+bin.includes = META-INF/,\

+               .

diff --git a/bundles/org.eclipse.uomo.units.tests/src/org/eclipse/uomo/units/impl/Benchmark.java b/bundles/org.eclipse.uomo.units.tests/src/org/eclipse/uomo/units/impl/Benchmark.java
index b26c4b1..ee67cd0 100644
--- a/bundles/org.eclipse.uomo.units.tests/src/org/eclipse/uomo/units/impl/Benchmark.java
+++ b/bundles/org.eclipse.uomo.units.tests/src/org/eclipse/uomo/units/impl/Benchmark.java
@@ -1,105 +1,105 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl;
-
-import static org.eclipse.uomo.units.SI.GRAM;
-import static org.eclipse.uomo.units.SI.KILOGRAM;
-import static org.eclipse.uomo.units.SI.Prefix.*;
-
-import java.util.Random;
-import java.util.logging.Logger;
-
-import org.eclipse.uomo.units.impl.quantity.MassAmount;
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.unit.IncommensurableException;
-import org.unitsofmeasurement.unit.UnconvertibleException;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-/**
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version $Revision$, $Date$
- * @param <Q> a quantity
- */
-public class Benchmark<Q extends Quantity<Q>> {
-    // Create logger object (usually with the class name)
-	private static Logger benchmarkLogger = Logger.getLogger(Benchmark.class.getName());
-	
-	private static final int N = 100000;
-
-	// Because of generic array creation.
-	private static final Unit<?>[] UNITS = new Unit[] { MEGA(GRAM), KILOGRAM,
-			GRAM, CENTI(GRAM), MILLI(GRAM), MICRO(GRAM) };
-
-	@SuppressWarnings("unchecked")
-	private static long usingQuantities(final long seed) {
-		long time = System.currentTimeMillis();
-		final Random r = new Random(seed);
-		// final QuantityFactory<Mass> factory =
-		// QuantityFactory.getInstance(Mass.class);
-		final MassAmount[] m = new MassAmount[N];
-		for (int i = 0; i < N; i++) {
-			m[i] = new MassAmount(r.nextGaussian(), KILOGRAM);
-		}
-		// Now perform some computation in a random unit.
-		@SuppressWarnings("rawtypes")
-		final Unit targetUnit = (Unit<?>) UNITS[r.nextInt(UNITS.length)];
-		double sum = 0;
-		for (int i = 0; i < N; i++) {
-			sum += m[i].doubleValue(targetUnit);
-		}
-		time = System.currentTimeMillis() - time;
-		benchmarkLogger.info("Using quantities: ellapsed time=" + (time / 1000f)
-				+ " s., result=" + sum);
-		return time;
-	}
-
-	private static long usingDouble(final long seed)
-			throws UnconvertibleException, IncommensurableException {
-		long time = System.currentTimeMillis();
-		final Random r = new Random(seed);
-		final double[] m = new double[N];
-		for (int i = 0; i < N; i++) {
-			m[i] = r.nextGaussian();
-		}
-		// Now perform some computation in a random unit.
-		final Unit<?> sourceUnit = KILOGRAM;
-		final Unit<?> targetUnit = (Unit<?>) UNITS[r.nextInt(UNITS.length)];
-		UnitConverter cv = sourceUnit.getConverterToAny((Unit<?>) targetUnit);
-		double sum = 0;
-		for (int i = 0; i < N; i++) {
-			sum += cv.convert(m[i]);
-		}
-		time = System.currentTimeMillis() - time;
-		benchmarkLogger.info("Using primitives: ellapsed time=" + (time / 1000f)
-				+ " s., result=" + sum);
-		return time;
-	}
-
-	public static void main(String[] args) throws InterruptedException {
-		// TODO add IE and UE to main
-		// Execute the loop many time for letting Hotspot to "warn up".
-		try {
-			final Random r = new Random();
-			for (int i = 0; i < 20; i++) {
-				final long seed = r.nextLong();
-				long t1 = usingQuantities(seed);
-				long t2 = usingDouble(seed);
-				benchmarkLogger.fine("Ratio: " + (float) t1 / (float) t2);
-				Thread.sleep(100);
-			}
-		} catch (IncommensurableException ie) {
-			throw new InterruptedException();
-		} catch (UnconvertibleException ue) {
-			throw new InterruptedException();
-		}
-	}
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl;

+

+import static org.eclipse.uomo.units.SI.GRAM;

+import static org.eclipse.uomo.units.SI.KILOGRAM;

+import static org.eclipse.uomo.units.SI.Prefix.*;

+

+import java.util.Random;

+import java.util.logging.Logger;

+

+import org.eclipse.uomo.units.impl.quantity.MassAmount;

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.unit.IncommensurableException;

+import org.unitsofmeasurement.unit.UnconvertibleException;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+/**

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version $Revision$, $Date$

+ * @param <Q> a quantity

+ */

+public class Benchmark<Q extends Quantity<Q>> {

+    // Create logger object (usually with the class name)

+	private static Logger benchmarkLogger = Logger.getLogger(Benchmark.class.getName());

+	

+	private static final int N = 100000;

+

+	// Because of generic array creation.

+	private static final Unit<?>[] UNITS = new Unit[] { MEGA(GRAM), KILOGRAM,

+			GRAM, CENTI(GRAM), MILLI(GRAM), MICRO(GRAM) };

+

+	@SuppressWarnings("unchecked")

+	private static long usingQuantities(final long seed) {

+		long time = System.currentTimeMillis();

+		final Random r = new Random(seed);

+		// final QuantityFactory<Mass> factory =

+		// QuantityFactory.getInstance(Mass.class);

+		final MassAmount[] m = new MassAmount[N];

+		for (int i = 0; i < N; i++) {

+			m[i] = new MassAmount(r.nextGaussian(), KILOGRAM);

+		}

+		// Now perform some computation in a random unit.

+		@SuppressWarnings("rawtypes")

+		final Unit targetUnit = (Unit<?>) UNITS[r.nextInt(UNITS.length)];

+		double sum = 0;

+		for (int i = 0; i < N; i++) {

+			sum += m[i].doubleValue(targetUnit);

+		}

+		time = System.currentTimeMillis() - time;

+		benchmarkLogger.info("Using quantities: ellapsed time=" + (time / 1000f)

+				+ " s., result=" + sum);

+		return time;

+	}

+

+	private static long usingDouble(final long seed)

+			throws UnconvertibleException, IncommensurableException {

+		long time = System.currentTimeMillis();

+		final Random r = new Random(seed);

+		final double[] m = new double[N];

+		for (int i = 0; i < N; i++) {

+			m[i] = r.nextGaussian();

+		}

+		// Now perform some computation in a random unit.

+		final Unit<?> sourceUnit = KILOGRAM;

+		final Unit<?> targetUnit = (Unit<?>) UNITS[r.nextInt(UNITS.length)];

+		UnitConverter cv = sourceUnit.getConverterToAny((Unit<?>) targetUnit);

+		double sum = 0;

+		for (int i = 0; i < N; i++) {

+			sum += cv.convert(m[i]);

+		}

+		time = System.currentTimeMillis() - time;

+		benchmarkLogger.info("Using primitives: ellapsed time=" + (time / 1000f)

+				+ " s., result=" + sum);

+		return time;

+	}

+

+	public static void main(String[] args) throws InterruptedException {

+		// TODO add IE and UE to main

+		// Execute the loop many time for letting Hotspot to "warn up".

+		try {

+			final Random r = new Random();

+			for (int i = 0; i < 20; i++) {

+				final long seed = r.nextLong();

+				long t1 = usingQuantities(seed);

+				long t2 = usingDouble(seed);

+				benchmarkLogger.fine("Ratio: " + (float) t1 / (float) t2);

+				Thread.sleep(100);

+			}

+		} catch (IncommensurableException ie) {

+			throw new InterruptedException();

+		} catch (UnconvertibleException ue) {

+			throw new InterruptedException();

+		}

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/.classpath b/bundles/org.eclipse.uomo.units/.classpath
index 710ceaa..7e0a6d5 100644
--- a/bundles/org.eclipse.uomo.units/.classpath
+++ b/bundles/org.eclipse.uomo.units/.classpath
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry exported="true" kind="lib" path="libs/unit-api-0.6.1.jar"/>
-	<classpathentry kind="src" path="src/main/java/"/>
-	<classpathentry kind="src" path="src/main/resources/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry exported="true" kind="lib" path="libs/unit-api-0.6.1.jar"/>

+	<classpathentry kind="src" path="src/main/java/"/>

+	<classpathentry kind="src" path="src/main/resources/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.units/.gitignore b/bundles/org.eclipse.uomo.units/.gitignore
index 2c36b17..21d5518 100644
--- a/bundles/org.eclipse.uomo.units/.gitignore
+++ b/bundles/org.eclipse.uomo.units/.gitignore
@@ -1,2 +1,2 @@
-/target
-/.settings
+/target

+/.settings

diff --git a/bundles/org.eclipse.uomo.units/.project b/bundles/org.eclipse.uomo.units/.project
index 1d6f88c..76fec93 100644
--- a/bundles/org.eclipse.uomo.units/.project
+++ b/bundles/org.eclipse.uomo.units/.project
@@ -1,60 +1,60 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.units</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.jboss.tools.jst.web.kb.kbbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.jboss.tools.cdi.core.cdibuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.jboss.tools.jst.web.kb.kbnature</nature>
-		<nature>org.jboss.tools.cdi.core.cdinature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.units</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.wst.common.project.facet.core.builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.jboss.tools.jst.web.kb.kbbuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.jboss.tools.cdi.core.cdibuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.wst.validation.validationbuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>

+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>

+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>

+		<nature>org.jboss.tools.jst.web.kb.kbnature</nature>

+		<nature>org.jboss.tools.cdi.core.cdinature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/org.eclipse.uomo.units/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.units/META-INF/MANIFEST.MF
index 9c0c9a9..5e437e3 100644
--- a/bundles/org.eclipse.uomo.units/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.units/META-INF/MANIFEST.MF
@@ -1,26 +1,26 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UOMo Units of Measurement
-Bundle-SymbolicName: org.eclipse.uomo.units;singleton:=true
-Bundle-Version: 0.7.0.qualifier
-Bundle-Activator: org.eclipse.uomo.units.Activator
-Bundle-Vendor: Eclipse.org
-Require-Bundle: com.ibm.icu;bundle-version="50.1.0";visibility:=reexport,
- org.eclipse.uomo.core;bundle-version="0.1.0"
-Import-Package: org.osgi.framework;version="1.3.0",
- org.osgi.util.tracker;version="1.3.1",
- org.unitsofmeasurement.unit
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.uomo.units,
- org.eclipse.uomo.units.impl;uses:="org.unitsofmeasurement.unit,org.eclipse.uomo.units",
- org.eclipse.uomo.units.impl.converter;uses:="org.unitsofmeasurement.unit,org.eclipse.uomo.units",
- org.eclipse.uomo.units.impl.format,
- org.eclipse.uomo.units.impl.quantity;
-  uses:="org.eclipse.uomo.units.impl,
-   org.unitsofmeasurement.quantity,
-   org.unitsofmeasurement.unit,
-   org.eclipse.uomo.units",
- org.eclipse.uomo.units.impl.system;uses:="org.unitsofmeasurement.unit,org.eclipse.uomo.units,org.unitsofmeasurement.service"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Bundle-ClassPath: libs/unit-api-0.6.1.jar,
- .
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UOMo Units of Measurement

+Bundle-SymbolicName: org.eclipse.uomo.units;singleton:=true

+Bundle-Version: 0.7.0.qualifier

+Bundle-Activator: org.eclipse.uomo.units.Activator

+Bundle-Vendor: Eclipse.org

+Require-Bundle: com.ibm.icu;bundle-version="50.1.0";visibility:=reexport,

+ org.eclipse.uomo.core;bundle-version="0.1.0"

+Import-Package: org.osgi.framework;version="1.3.0",

+ org.osgi.util.tracker;version="1.3.1",

+ org.unitsofmeasurement.unit

+Bundle-ActivationPolicy: lazy

+Export-Package: org.eclipse.uomo.units,

+ org.eclipse.uomo.units.impl;uses:="org.unitsofmeasurement.unit,org.eclipse.uomo.units",

+ org.eclipse.uomo.units.impl.converter;uses:="org.unitsofmeasurement.unit,org.eclipse.uomo.units",

+ org.eclipse.uomo.units.impl.format,

+ org.eclipse.uomo.units.impl.quantity;

+  uses:="org.eclipse.uomo.units.impl,

+   org.unitsofmeasurement.quantity,

+   org.unitsofmeasurement.unit,

+   org.eclipse.uomo.units",

+ org.eclipse.uomo.units.impl.system;uses:="org.unitsofmeasurement.unit,org.eclipse.uomo.units,org.unitsofmeasurement.service"

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Bundle-ClassPath: libs/unit-api-0.6.1.jar,

+ .

diff --git a/bundles/org.eclipse.uomo.units/libs/README b/bundles/org.eclipse.uomo.units/libs/README
index 9edcad5..3b4d98f 100644
--- a/bundles/org.eclipse.uomo.units/libs/README
+++ b/bundles/org.eclipse.uomo.units/libs/README
@@ -1,3 +1,3 @@
-This jar file is included here because it cannot be downloaded from a public p2 repository at this time.
-
+This jar file is included here because it cannot be downloaded from a public p2 repository at this time.

+

 If this file is included in Orbit - it can be removed.
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.units/src/main/java/.gitignore b/bundles/org.eclipse.uomo.units/src/main/java/.gitignore
index 1a70481..f023427 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/.gitignore
+++ b/bundles/org.eclipse.uomo.units/src/main/java/.gitignore
@@ -1 +1 @@
-/META-INF
+/META-INF

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractConverter.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractConverter.java
index 5d7a880..31dc596 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractConverter.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractConverter.java
@@ -1,276 +1,276 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.math.MathContext;
-import java.util.Arrays;
-import java.util.List;
-
-import org.unitsofmeasurement.unit.UnitConverter;
-
-/**
- * <p> This class represents a converter of numeric values.</p>
- *
- * <p> It is not required for sub-classes to be immutable
- *     (e.g. currency converter).</p>
- *
- * <p> Sub-classes must ensure unicity of the {@linkplain #IDENTITY identity}
- *     converter. In other words, if the result of an operation is equivalent
- *     to the identity converter, then the unique {@link #IDENTITY} instance
- *     should be returned.</p>
- *
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.4 ($Revision: 231 $), $Date: 2010-10-13 16:53:37 +0200 (Mi, 13 Okt 2010) $
- */
-public abstract class AbstractConverter implements UnitConverter, Serializable {
-
-    /**
-     * For cross-version compatibility.
-     */
-    private static final long serialVersionUID = 2557410026012911803L;
-
-    /**
-     * Holds the identity converter (unique). This converter does nothing
-     * (<code>ONE.convert(x) == x</code>). This instance is unique.
-     */
-    public static final UnitConverter IDENTITY = new Identity();
-
-    /**
-     * Default constructor.
-     */
-    protected AbstractConverter() {
-    }
-
-    /**
-     * Returns the inverse of this converter. If <code>x</code> is a valid
-     * value, then <code>x == inverse().convert(convert(x))</code> to within
-     * the accuracy of computer arithmetic.
-     *
-     * @return the inverse of this converter.
-     */
-    public abstract UnitConverter inverse();
-
-    /**
-     * Indicates whether this converter is considered to be the the same as the
-     * one specified.
-     *
-     * @param  cvtr the converter with which to compare.
-     * @return <code>true</code> if the specified object is a converter
-     *         considered equals to this converter;<code>false</code> otherwise.
-     */
-//    @Override
-//    public abstract boolean equals(Object cvtr);
-
-    /**
-     * Returns a hash code value for this converter. Equals object have equal
-     * hash codes.
-     *
-     * @return this converter hash code value.
-     * @see    #equals
-     */
-    //@Override
-    //public abstract int hashCode();
-
-    /**
-     * Concatenates this converter with another converter. The resulting
-     * converter is equivalent to first converting by the specified converter
-     * (right converter), and then converting by this converter (left converter).
-     *
-     * <p>Note: Implementations must ensure that the {@link #IDENTITY} instance
-     *          is returned if the resulting converter is an identity
-     *          converter.</p>
-     *
-     * @param  converter the other converter.
-     * @return the concatenation of this converter with the other converter.
-     */
-    public UnitConverter concatenate(UnitConverter converter) {
-        return (converter == IDENTITY) ? this : new CompoundImpl(this, converter);
-    }
-	
-    @Override
-	public boolean isIdentity() {
-		return false;
-	}
-
-	@Override
-	public List<UnitConverter> getCompoundConverters() {
-		return Arrays.asList((UnitConverter)new CompoundImpl(this, this));
-	}
-	
-    /**
-     * This interface is implemented by converters made up of two
-     * separate converters (in matrix notation
-     * <code>[compound] = [left] x [right]</code>).
-     */
-    public interface Compound {
-
-        /**
-         * Returns the left converter of this compound converter
-         * (the last one performing the conversion).
-         *
-         * @return the left converter.
-         */
-        AbstractConverter getLeft();
-
-        /**
-         * Returns the right converter of this compound converter
-         * (the first one performing the conversion).
-         *
-         * @return the right converter.
-         */
-        AbstractConverter getRight();
-    }
-
-    /**
-     * This inner class represents the identity converter (singleton).
-     */
-    private static final class Identity extends AbstractConverter {
-
-        /**
-         * For cross-version compatibility.
-         */
-        private static final long serialVersionUID = 7675901502919547460L;
-
-        @Override
-        public Identity inverse() {
-            return this;
-        }
-
-        @Override
-        public double convert(double value) {
-            return value;
-        }
-
-        @Override
-        public BigDecimal convert(BigDecimal value, MathContext ctx) {
-            return value;
-        }
-
-		public Number convert(Number value) {
-			return value;
-		}
-		
-        @Override
-        public boolean equals(Object cvtr) {
-            return this == cvtr; // Unique instance.
-        }
-
-        @Override
-        public int hashCode() {
-            return 0;
-        }
-
-        @Override
-        public boolean isLinear() {
-            return true;
-        }
-
-		@Override
-		public boolean isIdentity() {
-			return true;
-		}
-    }
-
-    /**
-     * This inner class represents a compound converter (non-linear).
-     */
-    private static final class CompoundImpl extends AbstractConverter implements Compound {
-
-        /**
-         * For cross-version compatibility.
-         */
-        private static final long serialVersionUID = 2242882007946934958L;
-
-        /**
-         * Holds the first converter.
-         */
-        private final AbstractConverter left;
-
-        /**
-         * Holds the second converter.
-         */
-        private final AbstractConverter right;
-
-        /**
-         * Creates a compound converter resulting from the combined
-         * transformation of the specified converters.
-         *
-         * @param  unitConverter the left converter.
-         * @param  unitConverter2 the right converter.
-         */
-        private CompoundImpl(UnitConverter unitConverter, UnitConverter unitConverter2) {
-            this.left = (AbstractConverter) unitConverter;
-            this.right = (AbstractConverter) unitConverter2;
-        }
-
-        @Override
-        public UnitConverter inverse() {
-            return new CompoundImpl(right.inverse(), left.inverse());
-        }
-
-        @Override
-        public double convert(double value) {
-            return left.convert(right.convert(value));
-        }
-
-        @Override
-        public BigDecimal convert(BigDecimal value, MathContext ctx) {
-            return left.convert(right.convert(value, ctx), ctx);
-        }
-
-
-		public Number convert(Number value) {
-			return left.convert(right.convert(value));
-		}
-        
-        @Override
-        public boolean equals(Object cvtr) {
-            if (this == cvtr)
-                return true;
-            if (!(cvtr instanceof Compound))
-                return false;
-            Compound that = (Compound) cvtr;
-            return (this.left.equals(that.getLeft()))
-                    && (this.right.equals(that.getRight()));
-        }
-
-        @Override
-        public int hashCode() {
-            return left.hashCode() + right.hashCode();
-        }
-
-        @Override
-        public boolean isLinear() {
-            return left.isLinear() && right.isLinear();
-        }
-
-        public AbstractConverter getLeft() {
-            return left;
-        }
-
-        public AbstractConverter getRight() {
-            return right;
-        }
-
-		@Override
-		public UnitConverter concatenate(UnitConverter converter) {
-			return (converter == IDENTITY) ? this : new CompoundImpl(this, converter);
-		}
-
-		@Override
-		public List<UnitConverter> getCompoundConverters() {
-			return Arrays.asList((UnitConverter)new CompoundImpl(this, this));
-		}
-    }
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units;

+

+import java.io.Serializable;

+import java.math.BigDecimal;

+import java.math.MathContext;

+import java.util.Arrays;

+import java.util.List;

+

+import org.unitsofmeasurement.unit.UnitConverter;

+

+/**

+ * <p> This class represents a converter of numeric values.</p>

+ *

+ * <p> It is not required for sub-classes to be immutable

+ *     (e.g. currency converter).</p>

+ *

+ * <p> Sub-classes must ensure unicity of the {@linkplain #IDENTITY identity}

+ *     converter. In other words, if the result of an operation is equivalent

+ *     to the identity converter, then the unique {@link #IDENTITY} instance

+ *     should be returned.</p>

+ *

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.4 ($Revision: 231 $), $Date: 2010-10-13 16:53:37 +0200 (Mi, 13 Okt 2010) $

+ */

+public abstract class AbstractConverter implements UnitConverter, Serializable {

+

+    /**

+     * For cross-version compatibility.

+     */

+    private static final long serialVersionUID = 2557410026012911803L;

+

+    /**

+     * Holds the identity converter (unique). This converter does nothing

+     * (<code>ONE.convert(x) == x</code>). This instance is unique.

+     */

+    public static final UnitConverter IDENTITY = new Identity();

+

+    /**

+     * Default constructor.

+     */

+    protected AbstractConverter() {

+    }

+

+    /**

+     * Returns the inverse of this converter. If <code>x</code> is a valid

+     * value, then <code>x == inverse().convert(convert(x))</code> to within

+     * the accuracy of computer arithmetic.

+     *

+     * @return the inverse of this converter.

+     */

+    public abstract UnitConverter inverse();

+

+    /**

+     * Indicates whether this converter is considered to be the the same as the

+     * one specified.

+     *

+     * @param  cvtr the converter with which to compare.

+     * @return <code>true</code> if the specified object is a converter

+     *         considered equals to this converter;<code>false</code> otherwise.

+     */

+//    @Override

+//    public abstract boolean equals(Object cvtr);

+

+    /**

+     * Returns a hash code value for this converter. Equals object have equal

+     * hash codes.

+     *

+     * @return this converter hash code value.

+     * @see    #equals

+     */

+    //@Override

+    //public abstract int hashCode();

+

+    /**

+     * Concatenates this converter with another converter. The resulting

+     * converter is equivalent to first converting by the specified converter

+     * (right converter), and then converting by this converter (left converter).

+     *

+     * <p>Note: Implementations must ensure that the {@link #IDENTITY} instance

+     *          is returned if the resulting converter is an identity

+     *          converter.</p>

+     *

+     * @param  converter the other converter.

+     * @return the concatenation of this converter with the other converter.

+     */

+    public UnitConverter concatenate(UnitConverter converter) {

+        return (converter == IDENTITY) ? this : new CompoundImpl(this, converter);

+    }

+	

+    @Override

+	public boolean isIdentity() {

+		return false;

+	}

+

+	@Override

+	public List<UnitConverter> getCompoundConverters() {

+		return Arrays.asList((UnitConverter)new CompoundImpl(this, this));

+	}

+	

+    /**

+     * This interface is implemented by converters made up of two

+     * separate converters (in matrix notation

+     * <code>[compound] = [left] x [right]</code>).

+     */

+    public interface Compound {

+

+        /**

+         * Returns the left converter of this compound converter

+         * (the last one performing the conversion).

+         *

+         * @return the left converter.

+         */

+        AbstractConverter getLeft();

+

+        /**

+         * Returns the right converter of this compound converter

+         * (the first one performing the conversion).

+         *

+         * @return the right converter.

+         */

+        AbstractConverter getRight();

+    }

+

+    /**

+     * This inner class represents the identity converter (singleton).

+     */

+    private static final class Identity extends AbstractConverter {

+

+        /**

+         * For cross-version compatibility.

+         */

+        private static final long serialVersionUID = 7675901502919547460L;

+

+        @Override

+        public Identity inverse() {

+            return this;

+        }

+

+        @Override

+        public double convert(double value) {

+            return value;

+        }

+

+        @Override

+        public BigDecimal convert(BigDecimal value, MathContext ctx) {

+            return value;

+        }

+

+		public Number convert(Number value) {

+			return value;

+		}

+		

+        @Override

+        public boolean equals(Object cvtr) {

+            return this == cvtr; // Unique instance.

+        }

+

+        @Override

+        public int hashCode() {

+            return 0;

+        }

+

+        @Override

+        public boolean isLinear() {

+            return true;

+        }

+

+		@Override

+		public boolean isIdentity() {

+			return true;

+		}

+    }

+

+    /**

+     * This inner class represents a compound converter (non-linear).

+     */

+    private static final class CompoundImpl extends AbstractConverter implements Compound {

+

+        /**

+         * For cross-version compatibility.

+         */

+        private static final long serialVersionUID = 2242882007946934958L;

+

+        /**

+         * Holds the first converter.

+         */

+        private final AbstractConverter left;

+

+        /**

+         * Holds the second converter.

+         */

+        private final AbstractConverter right;

+

+        /**

+         * Creates a compound converter resulting from the combined

+         * transformation of the specified converters.

+         *

+         * @param  unitConverter the left converter.

+         * @param  unitConverter2 the right converter.

+         */

+        private CompoundImpl(UnitConverter unitConverter, UnitConverter unitConverter2) {

+            this.left = (AbstractConverter) unitConverter;

+            this.right = (AbstractConverter) unitConverter2;

+        }

+

+        @Override

+        public UnitConverter inverse() {

+            return new CompoundImpl(right.inverse(), left.inverse());

+        }

+

+        @Override

+        public double convert(double value) {

+            return left.convert(right.convert(value));

+        }

+

+        @Override

+        public BigDecimal convert(BigDecimal value, MathContext ctx) {

+            return left.convert(right.convert(value, ctx), ctx);

+        }

+

+

+		public Number convert(Number value) {

+			return left.convert(right.convert(value));

+		}

+        

+        @Override

+        public boolean equals(Object cvtr) {

+            if (this == cvtr)

+                return true;

+            if (!(cvtr instanceof Compound))

+                return false;

+            Compound that = (Compound) cvtr;

+            return (this.left.equals(that.getLeft()))

+                    && (this.right.equals(that.getRight()));

+        }

+

+        @Override

+        public int hashCode() {

+            return left.hashCode() + right.hashCode();

+        }

+

+        @Override

+        public boolean isLinear() {

+            return left.isLinear() && right.isLinear();

+        }

+

+        public AbstractConverter getLeft() {

+            return left;

+        }

+

+        public AbstractConverter getRight() {

+            return right;

+        }

+

+		@Override

+		public UnitConverter concatenate(UnitConverter converter) {

+			return (converter == IDENTITY) ? this : new CompoundImpl(this, converter);

+		}

+

+		@Override

+		public List<UnitConverter> getCompoundConverters() {

+			return Arrays.asList((UnitConverter)new CompoundImpl(this, this));

+		}

+    }

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractFormat.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractFormat.java
index f4613b2..61c9eb9 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractFormat.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractFormat.java
@@ -1,117 +1,117 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units;
-
-import java.io.IOException;
-import java.text.ParsePosition;
-
-import org.eclipse.uomo.units.impl.format.LocalUnitFormatImpl;
-import org.eclipse.uomo.units.impl.system.USCustomary;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitFormat;
-
-import com.ibm.icu.text.UFormat;
-import com.ibm.icu.util.ULocale;
-
-
-/**
- * <p> This class provides the interface for formatting and parsing {@link
- *     AbstractUnit units}.</p>
- *
- * <p> For all metric units, the 20 SI prefixes used to form decimal
- *     multiples and sub-multiples of SI units are recognized.
- *     {@link USCustomary US Customary} units are directly recognized. For example:[code]
- *        Unit.valueOf("m°C").equals(SI.MILLI(SI.CELSIUS))
- *        Unit.valueOf("kW").equals(SI.KILO(SI.WATT))
- *        Unit.valueOf("ft").equals(SI.METRE.multiply(3048).divide(10000))[/code]</p>
- *
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.5.1 ($Revision: 215 $), $Date: 2010-09-19 22:12:08 +0200 (So, 19 Sep 2010) $
- * 
- */
-public abstract class AbstractFormat extends UFormat implements UnitFormat {
-
-   /**
-     * Returns the {@link SymbolMap} for this unit format.
-     *
-     * @return the symbol map used by this format.
-     */
-    protected abstract SymbolMap getSymbolMap();
-
-    /**
-     * Formats the specified unit.
-     *
-     * @param unit the unit to format.
-     * @param appendable the appendable destination.
-     * @return The appendable destination passed in as {@code appendable},
-     *         with formatted text appended.
-     * @throws IOException if an error occurs.
-     */
-    public abstract Appendable format(Unit<?> unit, Appendable appendable)
-            throws IOException;
-
-    /**
-     * Parses a portion of the specified <code>CharSequence</code> from the
-     * specified position to produce a unit. If there is no unit to parse
-     * {@link AbstractUnit#ONE} is returned.
-     *
-     * @param csq the <code>CharSequence</code> to parse.
-     * @param cursor the cursor holding the current parsing index.
-     * @return the unit parsed from the specified character sub-sequence.
-     * @throws IllegalArgumentException if any problem occurs while parsing the
-     *         specified character sequence (e.g. illegal syntax).
-     */
-    public abstract Unit<?> parse(CharSequence csq, ParsePosition cursor)
-            throws IllegalArgumentException;
-
-    /**
-     * Return a formatter for CurrencyAmount objects in the given
-     * locale.
-     * @param locale desired locale
-     * @return a formatter object
-     * @stable ICU 3.0
-     */
-    public static AbstractFormat getUnitFormat(ULocale locale) {
-        return LocalUnitFormatImpl.getInstance(locale.toLocale());
-    }
-
-    /**
-     * Return a formatter for CurrencyAmount objects in the default
-     * locale.
-     * @return a formatter object
-     * @stable ICU 3.0
-     */
-    public static AbstractFormat getUnitFormat() {
-        return getUnitFormat(ULocale.getDefault());
-    }
-    
-    /**
-     * Convenience method equivalent to {@link #format(AbstractUnit, Appendable)}
-     * except it does not raise an IOException.
-     *
-     * @param unit the unit to format.
-     * @param dest the appendable destination.
-     * @return the specified <code>StringBuilder</code>.
-     */
-    final StringBuilder format(AbstractUnit<?> unit, StringBuilder dest) {
-        try {
-            return (StringBuilder) this.format(unit, (Appendable) dest);
-        } catch (IOException ex) {
-            throw new Error(ex); // Can never happen.
-        }
-    }
-
-    /**
-     * serialVersionUID
-     */
-    private static final long serialVersionUID = -2046025267890654321L;
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units;

+

+import java.io.IOException;

+import java.text.ParsePosition;

+

+import org.eclipse.uomo.units.impl.format.LocalUnitFormatImpl;

+import org.eclipse.uomo.units.impl.system.USCustomary;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitFormat;

+

+import com.ibm.icu.text.UFormat;

+import com.ibm.icu.util.ULocale;

+

+

+/**

+ * <p> This class provides the interface for formatting and parsing {@link

+ *     AbstractUnit units}.</p>

+ *

+ * <p> For all metric units, the 20 SI prefixes used to form decimal

+ *     multiples and sub-multiples of SI units are recognized.

+ *     {@link USCustomary US Customary} units are directly recognized. For example:[code]

+ *        Unit.valueOf("m°C").equals(SI.MILLI(SI.CELSIUS))

+ *        Unit.valueOf("kW").equals(SI.KILO(SI.WATT))

+ *        Unit.valueOf("ft").equals(SI.METRE.multiply(3048).divide(10000))[/code]</p>

+ *

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.5.1 ($Revision: 215 $), $Date: 2010-09-19 22:12:08 +0200 (So, 19 Sep 2010) $

+ * 

+ */

+public abstract class AbstractFormat extends UFormat implements UnitFormat {

+

+   /**

+     * Returns the {@link SymbolMap} for this unit format.

+     *

+     * @return the symbol map used by this format.

+     */

+    protected abstract SymbolMap getSymbolMap();

+

+    /**

+     * Formats the specified unit.

+     *

+     * @param unit the unit to format.

+     * @param appendable the appendable destination.

+     * @return The appendable destination passed in as {@code appendable},

+     *         with formatted text appended.

+     * @throws IOException if an error occurs.

+     */

+    public abstract Appendable format(Unit<?> unit, Appendable appendable)

+            throws IOException;

+

+    /**

+     * Parses a portion of the specified <code>CharSequence</code> from the

+     * specified position to produce a unit. If there is no unit to parse

+     * {@link AbstractUnit#ONE} is returned.

+     *

+     * @param csq the <code>CharSequence</code> to parse.

+     * @param cursor the cursor holding the current parsing index.

+     * @return the unit parsed from the specified character sub-sequence.

+     * @throws IllegalArgumentException if any problem occurs while parsing the

+     *         specified character sequence (e.g. illegal syntax).

+     */

+    public abstract Unit<?> parse(CharSequence csq, ParsePosition cursor)

+            throws IllegalArgumentException;

+

+    /**

+     * Return a formatter for CurrencyAmount objects in the given

+     * locale.

+     * @param locale desired locale

+     * @return a formatter object

+     * @stable ICU 3.0

+     */

+    public static AbstractFormat getUnitFormat(ULocale locale) {

+        return LocalUnitFormatImpl.getInstance(locale.toLocale());

+    }

+

+    /**

+     * Return a formatter for CurrencyAmount objects in the default

+     * locale.

+     * @return a formatter object

+     * @stable ICU 3.0

+     */

+    public static AbstractFormat getUnitFormat() {

+        return getUnitFormat(ULocale.getDefault());

+    }

+    

+    /**

+     * Convenience method equivalent to {@link #format(AbstractUnit, Appendable)}

+     * except it does not raise an IOException.

+     *

+     * @param unit the unit to format.

+     * @param dest the appendable destination.

+     * @return the specified <code>StringBuilder</code>.

+     */

+    final StringBuilder format(AbstractUnit<?> unit, StringBuilder dest) {

+        try {

+            return (StringBuilder) this.format(unit, (Appendable) dest);

+        } catch (IOException ex) {

+            throw new Error(ex); // Can never happen.

+        }

+    }

+

+    /**

+     * serialVersionUID

+     */

+    private static final long serialVersionUID = -2046025267890654321L;

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractQuantity.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractQuantity.java
index b168110..83f3e78 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractQuantity.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/AbstractQuantity.java
@@ -1,771 +1,771 @@
-/**
- * Copyright (c) 2005, 2014, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.units;
-
-import java.math.BigDecimal;
-import java.math.MathContext;
-import org.unitsofmeasurement.quantity.Dimensionless;
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * <p> This class represents the immutable result of a scalar IMeasure stated
- *     in a known unit.</p>
- * 
- * <p> To avoid any lost of precision, known exact measure (e.g. physical 
- *     constants) should not be created from <code>double</code> constants but
- *     from their decimal representation.<br/><code>
- *         public static final IMeasure<Number, Velocity> C = AbstractIMeasure.of("299792458 m/s").asType(Velocity.class);
- *         // Speed of Light (exact).
- *    </code></p>
- * 
- * <p> Measures can be converted to different units, the conversion precision is
- *     determined by the specified {@link MathContext}.<br/><code>
- *         IMeasure<Number, Velocity> milesPerHour = C.to(MILES_PER_HOUR, MathContext.DECIMAL128); // Use BigDecimal implementation.
- *         System.out.println(milesPerHour);
- * 
- *         > 670616629.3843951324266284896206156 [mi_i]/h
- *     </code>
- *     If no precision is specified <code>double</code> precision is assumed.<code>
- *         IMeasure<Double, Velocity> milesPerHour = C.to(MILES_PER_HOUR); // Use double implementation (fast).
- *         System.out.println(milesPerHour);
- * 
- *         > 670616629.3843951 [mi_i]/h
- *     </code></p>
- * 
- * <p> Applications may sub-class {@link AbstractQuantity} for particular IMeasures
- *     types.<br/><code>
- *         // Quantity of type Mass based on <code>double</code> primitive types.
- *         public class MassAmount extends AbstractQuantity<Mass> { 
- *             private final double _kilograms; // Internal SI representation. 
- *             private Mass(double kilograms) { _kilograms = kilograms; }
- *             public static Mass of(double value, Unit<Mass> unit) {
- *                 return new Mass(unit.getConverterTo(SI.KILOGRAM).convert(value));
- *             } 
- *             public Unit<Mass> getUnit() { return SI.KILOGRAM; } 
- *             public Double getValue() { return _kilograms; } 
- *             ...
- *         }
- * 
- *         // Complex numbers IMeasures.
- *         public class ComplexQuantity<Q extends Quantity> extends AbstractQuantity<Q> {
- *             public Complex getValue() { ... } // Assuming Complex is a Number.
- *             ... 
- *         }
- * 
- *         // Specializations of complex numbers IMeasures.
- *         public class Current extends ComplexQuantity<ElectricCurrent> {...} 
- *         public class Tension extends ComplexQuantity<ElectricPotential> {...}
- *         </code></p>
- * 
- * <p> All instances of this class shall be immutable.</p>
- * 
- * @author  <a href="mailto:units@catmedia.us">Werner Keil</a>
- * @version 1.3, $Date: 2014-04-23 $
- */
-public abstract class AbstractQuantity<Q extends Quantity<Q>> implements IMeasure<Q> {
-	
-    /**
-	 * 
-	 */
-//	private static final long serialVersionUID = -4993173119977931016L;
-    
-	private final Unit<Q> unit;
-	
-	/**
-	 * Holds a dimensionless measure of none (exact).
-	 */
-//	public static final AbstractQuantity<Dimensionless> NONE = of(0, SI.ONE);
-	
-	/**
-	 * Holds a dimensionless measure of one (exact).
-	 */
-	/**
-	 * Holds a dimensionless measure of one (exact).
-	 */
-	public static final Quantity<Dimensionless> ONE =
-			QuantityFactory.getInstance(Dimensionless.class).create(
-					BigDecimal.ONE, AbstractUnit.ONE);
-	
-	/**
-     * constructor.
-     */
-    protected AbstractQuantity(Unit<Q> unit) {
-    	this.unit = unit;
-    }
-
-    /**
-     * Returns the IMeasure numeric value.
-     *
-     * @return the IMeasure value.
-     */
-    public abstract Number getValue();
-
-    /**
-     * Returns the IMeasure unit.
-     *
-     * @return the IMeasure unit.
-     */
-    public Unit<Q> getUnit() {
-    	return unit;
-    }
-    
-    /**
-     * Returns the IMeasure unit.
-     *
-     * @return the IMeasure unit.
-     */
-    public Unit<Q> unit() {
-    	return getUnit();
-    }
-
-    /**
-     * Convenient method equivalent to {@link #to(javax.measure.unit.Unit)
-     * to(this.getUnit().toSI())}.
-     *
-     * @return this measure or a new measure equivalent to this measure but
-     *         stated in SI units.
-     * @throws ArithmeticException if the result is inexact and the quotient
-     *         has a non-terminating decimal expansion.
-     */
-    public AbstractQuantity<Q> toSI() {
-        return to(this.getUnit().getSystemUnit());
-    }
-
-    /**
-     * Returns this measure after conversion to specified unit. The default
-     * implementation returns
-     * <code>Measure.valueOf(doubleValue(unit), unit)</code>. If this measure is
-     * already stated in the specified unit, then this measure is returned and
-     * no conversion is performed.
-     *
-     * @param unit the unit in which the returned measure is stated.
-     * @return this measure or a new measure equivalent to this measure but
-     *         stated in the specified unit.
-     * @throws ArithmeticException if the result is inexact and the quotient has
-     *         a non-terminating decimal expansion.
-     */
-    public AbstractQuantity<Q> to(Unit<Q> unit) {
-        if (unit.equals(this.getUnit())) {
-            return this;
-        }
-        //return AbstractIMeasure.of(doubleValue(unit), unit);
-        return AbstractQuantity.of(decimalValue(unit, MathContext.UNLIMITED), unit);
-    }
-
-    /**
-     * Returns this measure after conversion to specified unit. The default
-     * implementation returns
-     * <code>Measure.valueOf(decimalValue(unit, ctx), unit)</code>. If this
-     * measure is already stated in the specified unit, then this measure is
-     * returned and no conversion is performed.
-     *
-     * @param unit the unit in which the returned measure is stated.
-     * @param ctx the math context to use for conversion.
-     * @return this measure or a new measure equivalent to this measure but
-     *         stated in the specified unit.
-     * @throws ArithmeticException if the result is inexact but the rounding
-     *         mode is <code>UNNECESSARY</code> or
-     *         <code>mathContext.precision == 0</code> and the quotient has
-     *         a non-terminating decimal expansion.
-     */
-    public AbstractQuantity<Q> to(Unit<Q> unit, MathContext ctx) {
-        if (unit.equals(this.getUnit())) {
-            return this;
-        }
-        return AbstractQuantity.of(decimalValue(unit, ctx), unit);
-    }
-
-    /**
-     * Compares this measure to the specified IMeasure quantity. The default
-     * implementation compares the {@link IMeasure#doubleValue(Unit)} of both
-     * this measure and the specified IMeasure stated in the same unit (this
-     * measure's {@link #getUnit() unit}).
-     *
-     * @return a negative integer, zero, or a positive integer as this measure
-     *         is less than, equal to, or greater than the specified IMeasure
-     *         quantity.
-     * @return <code>Double.compare(this.doubleValue(getUnit()),
-     *         that.doubleValue(getUnit()))</code>
-     */
-    public int compareTo(Quantity<Q> that) {
-        Unit<Q> unit = getUnit();
-        return Double.compare(doubleValue(unit), that.value().doubleValue());
-    }
-
-    /**
-     * Compares this measure against the specified object for <b>strict</b>
-     * equality (same unit and same amount).
-     *
-     * <p> Similarly to the {@link BigDecimal#equals} method which consider 2.0
-     *     and 2.00 as different objects because of different internal scales,
-     *     IMeasures such as <code>Measure.valueOf(3.0, KILOGRAM)</code>
-     *     <code>Measure.valueOf(3, KILOGRAM)</code> and
-     *     <code>Measure.valueOf("3 kg")</code> might not be considered equals
-     *     because of possible differences in their implementations.</p>
-     *
-     * <p> To compare measures stated using different units or using different
-     *     amount implementations the {@link #compareTo compareTo} or
-     *     {@link #equals(javax.measure.IMeasure, double, javax.measure.unit.Unit)
-     *      equals(IMeasure, epsilon, epsilonUnit)} methods should be used.</p>
-     *
-     * @param obj the object to compare with.
-     * @return <code>this.getUnit.equals(obj.getUnit())
-     *         && this.getValue().equals(obj.getValue())</code>
-     */
-    @Override
-    public boolean equals(Object obj) {
-        if (!(obj instanceof AbstractQuantity<?>)) {
-            return false;
-        }
-        AbstractQuantity<?> that = (AbstractQuantity<?>) obj;
-        return this.getUnit().equals(that.getUnit()) && this.getValue().equals(that.value());
-    }
-
-    /**
-     * Compares this measure and the specified IMeasure to the given accuracy.
-     * IMeasures are considered approximately equals if their absolute
-     * differences when stated in the same specified unit is less than the
-     * specified epsilon.
-     *
-     * @param that the IMeasure to compare with.
-     * @param epsilon the absolute error stated in epsilonUnit.
-     * @param epsilonUnit the epsilon unit.
-     * @return <code>abs(this.doubleValue(epsilonUnit) - that.doubleValue(epsilonUnit)) &lt;= epsilon</code>
-     */
-    public boolean equals(AbstractQuantity<Q> that, double epsilon, Unit<Q> epsilonUnit) {
-        return Math.abs(this.doubleValue(epsilonUnit) - that.doubleValue(epsilonUnit)) <= epsilon;
-    }
-
-    /**
-     * Returns the hash code for this measure.
-     *
-     * @return the hash code value.
-     */
-    @Override
-    public int hashCode() {
-        return getUnit().hashCode() + getValue().hashCode();
-    }
-
-    public abstract boolean isBig();
-    
-    /**
-     * Returns the <code>String</code> representation of this measure. The
-     * string produced for a given measure is always the same; it is not
-     * affected by locale. This means that it can be used as a canonical string
-     * representation for exchanging measure, or as a key for a Hashtable, etc.
-     * Locale-sensitive measure formatting and parsing is handled by the
-     * {@link IMeasureFormat} class and its subclasses.
-     *
-     * @return <code>UnitFormat.getInternational().format(this)</code>
-     */
-    @Override
-    public String toString() {
-        //return MeasureFormat.getStandard().format(this); TODO improve MeasureFormat
-    	return String.valueOf(getValue()) + " " + String.valueOf(getUnit());
-    }
-
-    public abstract BigDecimal decimalValue(Unit<Q> unit, MathContext ctx)
-            throws ArithmeticException;
-    
-    public abstract  double doubleValue(Unit<Q> unit)
-            throws ArithmeticException;
-    
-    // Implements AbstractIMeasure
-    public final int intValue(Unit<Q> unit) throws ArithmeticException {
-        long longValue = longValue(unit);
-        if ((longValue < Integer.MIN_VALUE) || (longValue > Integer.MAX_VALUE)) {
-            throw new ArithmeticException("Cannot convert " + longValue + " to int (overflow)");
-        }
-        return (int) longValue;
-    }
-
-    public long longValue(Unit<Q> unit) throws ArithmeticException {
-        double result = doubleValue(unit);
-        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {
-            throw new ArithmeticException("Overflow (" + result + ")");
-        }
-        return (long) result;
-    }
-
-    protected final float floatValue(Unit<Q> unit) {
-        return (float) doubleValue(unit);
-    }
-
-    /**
-     * Casts this measure to a parameterized unit of specified nature or throw a
-     * <code>ClassCastException</code> if the dimension of the specified
-     * quantity and this measure unit's dimension do not match. For
-     * example:<br/><code>
-     *     Measure<Length> length = Measure.valueOf("2 km").asType(Length.class);
-     * </code>
-     *
-     * @param type the quantity class identifying the nature of the measure.
-     * @return this measure parameterized with the specified type.
-     * @throws ClassCastException if the dimension of this unit is different
-     *         from the specified quantity dimension.
-     * @throws UnsupportedOperationException
-     *             if the specified quantity class does not have a public static
-     *             field named "UNIT" holding the SI unit for the quantity.
-     * @see Unit#asType(Class)
-     */
-    @SuppressWarnings("unchecked")
-    public final <T extends Quantity<T>> AbstractQuantity<T> asType(Class<T> type)
-            throws ClassCastException {
-        this.getUnit().asType(type); // Raises ClassCastException is dimension
-        // mismatches.
-        return (AbstractQuantity<T>) this;
-    }
-
-    /**
-     * Returns the
-     * {@link #valueOf(java.math.BigDecimal, javax.measure.unit.Unit) decimal}
-     * measure of unknown type corresponding to the specified representation.
-     * This method can be used to parse dimensionless quantities.<br/><code>
-     *     IMeasure<Number, Dimensionless> proportion = Measure.valueOf("0.234").asType(Dimensionless.class);
-     * </code>
-     *
-     * <p> Note: This method handles only
-     * {@link javax.measure.unit.UnitFormat#getStandard standard} unit format
-     * (<a href="http://unitsofmeasure.org/">UCUM</a> based). Locale-sensitive
-     * measure formatting and parsing are handled by the {@link IMeasureFormat}
-     * class and its subclasses.</p>
-     *
-     * @param csq the decimal value and its unit (if any) separated by space(s).
-     * @return <code>MeasureFormat.getStandard().parse(csq, new ParsePosition(0))</code>
-     */
-//    public static AbstractQuantity<?> of(CharSequence csq) {
-//        try {
-//			return QuantityFormat.getInstance(LOCALE_NEUTRAL).parse(csq, new ParsePosition(0));
-//		} catch (IllegalArgumentException | ParserException e) {
-//			throw new IllegalArgumentException(e); // TODO could we handle this differently?
-//		}
-//    }
-
-    /**
-     * Returns the scalar measure for the specified <code>int</code> stated in
-     * the specified unit.
-     *
-     * @param intValue the IMeasure value.
-     * @param unit the IMeasure unit.
-     * @return the corresponding <code>int</code> measure.
-     */
-    public static <Q extends Quantity<Q>> AbstractQuantity<Q> of(int intValue,
-            Unit<Q> unit) {
-        return new IntegerQuantity<Q>(intValue, unit);
-    }
-
-    private static final class IntegerQuantity<T extends Quantity<T>> extends AbstractQuantity<T> {
-
-        /**
-		 * 
-		 */
-//		private static final long serialVersionUID = 5355395476874521709L;
-		
-		final int value;
-
-        public IntegerQuantity(int value, Unit<T> unit) {
-        	super(unit);
-        	this.value = value;
-        }
-
-        @Override
-        public Integer value() {
-            return value;
-        }
-
-        // Implements IMeasure
-        public double doubleValue(Unit<T> unit) {
-            return (super.unit.equals(unit)) ? value : super.unit.getConverterTo(unit).convert(value);
-        }
-
-        // Implements IMeasure
-        public BigDecimal decimalValue(Unit<T> unit, MathContext ctx)
-                throws ArithmeticException {
-            BigDecimal decimal = BigDecimal.valueOf(value);
-            return (super.unit.equals(unit)) ? decimal : ((AbstractConverter)super.unit.getConverterTo(unit)).convert(decimal, ctx);
-        }
-
-		@Override
-		public long longValue(Unit<T> unit) {
-	        double result = doubleValue(unit);
-	        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {
-	            throw new ArithmeticException("Overflow (" + result + ")");
-	        }
-	        return (long) result;
-		}
-
-		@Override
-		public IMeasure<T> add(IMeasure<T> that) {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		@Override
-		public IntegerQuantity<T> subtract(IMeasure<T> that) {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		@Override
-		public IMeasure<?> multiply(IMeasure<?> that) {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		@Override
-		public IMeasure<?> multiply(Number that) {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		@Override
-		public IMeasure<?> divide(IMeasure<?> that) {
-			return of((double)value / that.value().doubleValue(), getUnit().divide(that.unit()));
-		}
-
-//		@SuppressWarnings("unchecked")
-//		@Override
-//		public IMeasure<T> inverse() {
-//			return (AbstractQuantity<T>) of(value, getUnit().inverse());
-//		}
-
-		@Override
-		public boolean isBig() {
-			return false;
-		}
-
-
-		@Override
-		public Unit<T> unit() {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		@Override
-		public IMeasure<? extends IMeasure<T>> inverse() {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		@Override
-		public Number getValue() {
-			return value();
-		}
-
-    }
-    
-    /**
-     * Returns the scalar measure for the specified <code>float</code> stated in
-     * the specified unit.
-     *
-     * @param floatValue the IMeasure value.
-     * @param unit the IMeasure unit.
-     * @return the corresponding <code>float</code> measure.
-     */
-    public static <Q extends Quantity<Q>> AbstractQuantity<Q> of(float floatValue,
-            Unit<Q> unit) {
-        return new FloatQuantity<Q>(floatValue, unit);
-    }
-
-    private static final class FloatQuantity<T extends Quantity<T>> extends AbstractQuantity<T> {
-
-        /**
-		 * 
-		 */
-//		private static final long serialVersionUID = 7857472738562215118L;
-		
-		final float value;
-
-        public FloatQuantity(float value, Unit<T> unit) {
-        	super(unit);
-            this.value = value;
-        }
-
-        @Override
-        public Float value() {
-            return Float.valueOf(value);
-        }
-
-        // Implements AbstractIMeasure
-        public double doubleValue(Unit<T> unit) {
-            return (super.unit.equals(unit)) ? value : super.unit.getConverterTo(unit).convert(value);
-        }
-
-        // Implements AbstractIMeasure
-        public BigDecimal decimalValue(Unit<T> unit, MathContext ctx)
-                throws ArithmeticException {
-            BigDecimal decimal = BigDecimal.valueOf(value); // TODO check value if it is a BD, otherwise use different converter
-            return (super.unit.equals(unit)) ? decimal : ((AbstractConverter)super.unit.getConverterTo(unit)).convert(decimal, ctx);
-        }
-
-		public long longValue(Unit<T> unit) {
-	        double result = doubleValue(unit);
-	        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {
-	            throw new ArithmeticException("Overflow (" + result + ")");
-	        }
-	        return (long) result;
-		}
-
-		@Override
-		public AbstractQuantity<T> add(IMeasure<T> that) {
-			return of(value + that.value().floatValue(), getUnit()); // TODO use shift of the unit?
-		}
-
-		@Override
-		public AbstractQuantity<T> subtract(IMeasure<T> that) {
-			return of(value - that.value().floatValue(), getUnit()); // TODO use shift of the unit?
-		}
-
-		@SuppressWarnings("unchecked")
-		@Override
-		public AbstractQuantity<T> multiply(IMeasure<?> that) {
-			return (AbstractQuantity<T>) of(value * that.value().floatValue(), 
-					getUnit().multiply(that.unit()));
-		}
-
-		@Override
-		public IMeasure<?> multiply(Number that) {
-			return of(value * that.floatValue(), 
-					getUnit().multiply(that.doubleValue()));
-		}
-
-		@Override
-		public IMeasure<?> divide(IMeasure<?> that) {
-			return of(value / that.value().floatValue(), getUnit().divide(that.unit()));
-		}
-
-		@SuppressWarnings("unchecked")
-		@Override
-		public IMeasure<? extends IMeasure<T>> inverse() {
-			return (IMeasure<? extends IMeasure<T>>) of(value, getUnit().inverse());
-		}
-
-		@Override
-		public boolean isBig() {
-			return false;
-		}
-
-		public IMeasure<?> divide(Number that) {
-			return of(value / that.floatValue(), getUnit());
-		}
-
-		@Override
-		public Number getValue() {
-			return value();
-		}
-    }
-
-    /**
-     * Returns the scalar measure for the specified <code>double</code> stated
-     * in the specified unit.
-     *
-     * @param doubleValue the IMeasure value.
-     * @param unit the IMeasure unit.
-     * @return the corresponding <code>double</code> measure.
-     */
-    public static <Q extends Quantity<Q>> AbstractQuantity<Q> of(double doubleValue,
-            Unit<Q> unit) {
-        return new DoubleQuantity<Q>(doubleValue, unit);
-    }
-
-    private static final class DoubleQuantity<T extends Quantity<T>> extends AbstractQuantity<T> {
-
-        final double value;
-
-        public DoubleQuantity(double value, Unit<T> unit) {
-        	super(unit);
-            this.value = value;
-        }
-
-        @Override
-        public Double value() {
-            return Double.valueOf(value);
-        }
-
-
-        public double doubleValue(Unit<T> unit) {
-            return (super.unit.equals(unit)) ? value : super.unit.getConverterTo(unit).convert(value);
-        }
-
-        @Override
-        public BigDecimal decimalValue(Unit<T> unit, MathContext ctx)
-                throws ArithmeticException {
-            BigDecimal decimal = BigDecimal.valueOf(value); // TODO check value if it is a BD, otherwise use different converter
-            return (super.unit.equals(unit)) ? decimal : ((AbstractConverter)super.unit.getConverterTo(unit)).convert(decimal, ctx);
-        }
-
-		@Override
-		public long longValue(Unit<T> unit) {
-	        double result = doubleValue(unit);
-	        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {
-	            throw new ArithmeticException("Overflow (" + result + ")");
-	        }
-	        return (long) result;
-		}
-
-		@Override
-		public IMeasure<T> add(IMeasure<T> that) {
-			return of(value + that.value().doubleValue(), getUnit()); // TODO use shift of the unit?
-		}
-
-		@Override
-		public IMeasure<T> subtract(IMeasure<T> that) {
-			return of(value - that.value().doubleValue(), getUnit()); // TODO use shift of the unit?
-		}
-
-		@Override
-		public IMeasure<?> multiply(IMeasure<?> that) {
-			return of(value * that.value().doubleValue(), getUnit().multiply(that.unit()));
-		}
-
-		@Override
-		public IMeasure<?> multiply(Number that) {
-			return of(value * that.doubleValue(), getUnit());
-		}
-
-		@Override
-		public IMeasure<?> divide(IMeasure<?> that) {
-			return of(value / that.value().doubleValue(), getUnit().divide(that.unit()));
-		}
-		
-		public IMeasure<?> divide(Number that) {
-			return of(value / that.doubleValue(), getUnit());
-		}
-
-//		@SuppressWarnings("unchecked")
-//		@Override
-//		public IMeasure<T> inverse() {
-//			return (AbstractQuantity<T>) of(value, getUnit().inverse());
-//		}
-
-		@Override
-		public boolean isBig() {
-			return false;
-		}
-
-		@Override
-		public IMeasure<? extends IMeasure<T>> inverse() {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		@Override
-		public Number getValue() {
-			return value();
-		}
-    }
-
-    /**
-     * Returns the scalar measure for the specified <code>BigDecimal</code>
-     * stated in the specified unit.
-     *
-     * @param decimalValue the IMeasure value.
-     * @param unit the IMeasure unit.
-     * @return the corresponding <code>BigDecimal</code> measure.
-     */
-    public static <Q extends Quantity<Q>> AbstractQuantity<Q> of(
-            BigDecimal decimalValue, Unit<Q> unit) {
-        return new DecimalQuantity<Q>(decimalValue, unit);
-    }
-    
-    private static final class DecimalQuantity<T extends Quantity<T>> extends AbstractQuantity<T> {
-
-        /**
-		 * 
-		 */
-//		private static final long serialVersionUID = 6504081836032983882L;
-		final BigDecimal value;
-
-        public DecimalQuantity(BigDecimal value, Unit<T> unit) {
-        	super(unit);
-        	this.value = value;
-        }
-
-        @Override
-        public BigDecimal value() {
-            return value;
-        }
-
-        // Implements AbstractIMeasure
-        public double doubleValue(Unit<T> unit) {
-            return (unit.equals(unit)) ? value.doubleValue() : unit.getConverterTo(unit).convert(value.doubleValue());
-        }
-
-        // Implements AbstractIMeasure
-        public BigDecimal decimalValue(Unit<T> unit, MathContext ctx)
-                throws ArithmeticException {
-            return (super.unit.equals(unit)) ? value :
-            	((AbstractConverter)unit.getConverterTo(unit)).convert(value, ctx);
-        }
-
-		@Override
-		public IMeasure<T> add(IMeasure<T> that) {
-			return of(value.add((BigDecimal)that.value()), getUnit()); // TODO use shift of the unit?
-		}
-
-		@Override
-		public IMeasure<T> subtract(IMeasure<T> that) {
-			return of(value.subtract((BigDecimal)that.value()), getUnit()); // TODO use shift of the unit?
-		}
-
-		@Override
-		public AbstractQuantity<?> multiply(IMeasure<?> that) {
-			return of(value.multiply((BigDecimal)that.value()), 
-					getUnit().multiply(that.unit()));
-		}
-
-		@Override
-		public IMeasure<?> multiply(Number that) {
-			return of(value.multiply((BigDecimal)that), getUnit());
-		}
-
-		@Override
-		public IMeasure<?> divide(IMeasure<?> that) {
-			return of(value.divide((BigDecimal)that.value()), getUnit());
-		}
-
-		public IMeasure<?> divide(Number that) {
-			return of(value.divide((BigDecimal)that), getUnit());
-		}
-		
-//		@SuppressWarnings("unchecked")
-//		@Override
-//		public AbstractQuantity<T> inverse() {
-//			//return of(value.negate(), getUnit());
-//			return (AbstractQuantity<T>) of(value, getUnit().inverse());
-//		}
-
-		public long longValue(Unit<T> unit) {
-	        double result = doubleValue(unit);
-	        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {
-	            throw new ArithmeticException("Overflow (" + result + ")");
-	        }
-	        return (long) result;
-		}
-
-		@Override
-		public boolean isBig() {
-			return false;
-		}
-
-		@Override
-		public Number getValue() {
-			return value();
-		}
-
-		@Override
-		public IMeasure<? extends IMeasure<T>> inverse() {
-			return (IMeasure<? extends IMeasure<T>>) of(value, getUnit().inverse());
-		}
-    }   
-
-}
+/**

+ * Copyright (c) 2005, 2014, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.units;

+

+import java.math.BigDecimal;

+import java.math.MathContext;

+import org.unitsofmeasurement.quantity.Dimensionless;

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * <p> This class represents the immutable result of a scalar IMeasure stated

+ *     in a known unit.</p>

+ * 

+ * <p> To avoid any lost of precision, known exact measure (e.g. physical 

+ *     constants) should not be created from <code>double</code> constants but

+ *     from their decimal representation.<br/><code>

+ *         public static final IMeasure<Number, Velocity> C = AbstractIMeasure.of("299792458 m/s").asType(Velocity.class);

+ *         // Speed of Light (exact).

+ *    </code></p>

+ * 

+ * <p> Measures can be converted to different units, the conversion precision is

+ *     determined by the specified {@link MathContext}.<br/><code>

+ *         IMeasure<Number, Velocity> milesPerHour = C.to(MILES_PER_HOUR, MathContext.DECIMAL128); // Use BigDecimal implementation.

+ *         System.out.println(milesPerHour);

+ * 

+ *         > 670616629.3843951324266284896206156 [mi_i]/h

+ *     </code>

+ *     If no precision is specified <code>double</code> precision is assumed.<code>

+ *         IMeasure<Double, Velocity> milesPerHour = C.to(MILES_PER_HOUR); // Use double implementation (fast).

+ *         System.out.println(milesPerHour);

+ * 

+ *         > 670616629.3843951 [mi_i]/h

+ *     </code></p>

+ * 

+ * <p> Applications may sub-class {@link AbstractQuantity} for particular IMeasures

+ *     types.<br/><code>

+ *         // Quantity of type Mass based on <code>double</code> primitive types.

+ *         public class MassAmount extends AbstractQuantity<Mass> { 

+ *             private final double _kilograms; // Internal SI representation. 

+ *             private Mass(double kilograms) { _kilograms = kilograms; }

+ *             public static Mass of(double value, Unit<Mass> unit) {

+ *                 return new Mass(unit.getConverterTo(SI.KILOGRAM).convert(value));

+ *             } 

+ *             public Unit<Mass> getUnit() { return SI.KILOGRAM; } 

+ *             public Double getValue() { return _kilograms; } 

+ *             ...

+ *         }

+ * 

+ *         // Complex numbers IMeasures.

+ *         public class ComplexQuantity<Q extends Quantity> extends AbstractQuantity<Q> {

+ *             public Complex getValue() { ... } // Assuming Complex is a Number.

+ *             ... 

+ *         }

+ * 

+ *         // Specializations of complex numbers IMeasures.

+ *         public class Current extends ComplexQuantity<ElectricCurrent> {...} 

+ *         public class Tension extends ComplexQuantity<ElectricPotential> {...}

+ *         </code></p>

+ * 

+ * <p> All instances of this class shall be immutable.</p>

+ * 

+ * @author  <a href="mailto:units@catmedia.us">Werner Keil</a>

+ * @version 1.3, $Date: 2014-04-23 $

+ */

+public abstract class AbstractQuantity<Q extends Quantity<Q>> implements IMeasure<Q> {

+	

+    /**

+	 * 

+	 */

+//	private static final long serialVersionUID = -4993173119977931016L;

+    

+	private final Unit<Q> unit;

+	

+	/**

+	 * Holds a dimensionless measure of none (exact).

+	 */

+//	public static final AbstractQuantity<Dimensionless> NONE = of(0, SI.ONE);

+	

+	/**

+	 * Holds a dimensionless measure of one (exact).

+	 */

+	/**

+	 * Holds a dimensionless measure of one (exact).

+	 */

+	public static final Quantity<Dimensionless> ONE =

+			QuantityFactory.getInstance(Dimensionless.class).create(

+					BigDecimal.ONE, AbstractUnit.ONE);

+	

+	/**

+     * constructor.

+     */

+    protected AbstractQuantity(Unit<Q> unit) {

+    	this.unit = unit;

+    }

+

+    /**

+     * Returns the IMeasure numeric value.

+     *

+     * @return the IMeasure value.

+     */

+    public abstract Number getValue();

+

+    /**

+     * Returns the IMeasure unit.

+     *

+     * @return the IMeasure unit.

+     */

+    public Unit<Q> getUnit() {

+    	return unit;

+    }

+    

+    /**

+     * Returns the IMeasure unit.

+     *

+     * @return the IMeasure unit.

+     */

+    public Unit<Q> unit() {

+    	return getUnit();

+    }

+

+    /**

+     * Convenient method equivalent to {@link #to(javax.measure.unit.Unit)

+     * to(this.getUnit().toSI())}.

+     *

+     * @return this measure or a new measure equivalent to this measure but

+     *         stated in SI units.

+     * @throws ArithmeticException if the result is inexact and the quotient

+     *         has a non-terminating decimal expansion.

+     */

+    public AbstractQuantity<Q> toSI() {

+        return to(this.getUnit().getSystemUnit());

+    }

+

+    /**

+     * Returns this measure after conversion to specified unit. The default

+     * implementation returns

+     * <code>Measure.valueOf(doubleValue(unit), unit)</code>. If this measure is

+     * already stated in the specified unit, then this measure is returned and

+     * no conversion is performed.

+     *

+     * @param unit the unit in which the returned measure is stated.

+     * @return this measure or a new measure equivalent to this measure but

+     *         stated in the specified unit.

+     * @throws ArithmeticException if the result is inexact and the quotient has

+     *         a non-terminating decimal expansion.

+     */

+    public AbstractQuantity<Q> to(Unit<Q> unit) {

+        if (unit.equals(this.getUnit())) {

+            return this;

+        }

+        //return AbstractIMeasure.of(doubleValue(unit), unit);

+        return AbstractQuantity.of(decimalValue(unit, MathContext.UNLIMITED), unit);

+    }

+

+    /**

+     * Returns this measure after conversion to specified unit. The default

+     * implementation returns

+     * <code>Measure.valueOf(decimalValue(unit, ctx), unit)</code>. If this

+     * measure is already stated in the specified unit, then this measure is

+     * returned and no conversion is performed.

+     *

+     * @param unit the unit in which the returned measure is stated.

+     * @param ctx the math context to use for conversion.

+     * @return this measure or a new measure equivalent to this measure but

+     *         stated in the specified unit.

+     * @throws ArithmeticException if the result is inexact but the rounding

+     *         mode is <code>UNNECESSARY</code> or

+     *         <code>mathContext.precision == 0</code> and the quotient has

+     *         a non-terminating decimal expansion.

+     */

+    public AbstractQuantity<Q> to(Unit<Q> unit, MathContext ctx) {

+        if (unit.equals(this.getUnit())) {

+            return this;

+        }

+        return AbstractQuantity.of(decimalValue(unit, ctx), unit);

+    }

+

+    /**

+     * Compares this measure to the specified IMeasure quantity. The default

+     * implementation compares the {@link IMeasure#doubleValue(Unit)} of both

+     * this measure and the specified IMeasure stated in the same unit (this

+     * measure's {@link #getUnit() unit}).

+     *

+     * @return a negative integer, zero, or a positive integer as this measure

+     *         is less than, equal to, or greater than the specified IMeasure

+     *         quantity.

+     * @return <code>Double.compare(this.doubleValue(getUnit()),

+     *         that.doubleValue(getUnit()))</code>

+     */

+    public int compareTo(Quantity<Q> that) {

+        Unit<Q> unit = getUnit();

+        return Double.compare(doubleValue(unit), that.value().doubleValue());

+    }

+

+    /**

+     * Compares this measure against the specified object for <b>strict</b>

+     * equality (same unit and same amount).

+     *

+     * <p> Similarly to the {@link BigDecimal#equals} method which consider 2.0

+     *     and 2.00 as different objects because of different internal scales,

+     *     IMeasures such as <code>Measure.valueOf(3.0, KILOGRAM)</code>

+     *     <code>Measure.valueOf(3, KILOGRAM)</code> and

+     *     <code>Measure.valueOf("3 kg")</code> might not be considered equals

+     *     because of possible differences in their implementations.</p>

+     *

+     * <p> To compare measures stated using different units or using different

+     *     amount implementations the {@link #compareTo compareTo} or

+     *     {@link #equals(javax.measure.IMeasure, double, javax.measure.unit.Unit)

+     *      equals(IMeasure, epsilon, epsilonUnit)} methods should be used.</p>

+     *

+     * @param obj the object to compare with.

+     * @return <code>this.getUnit.equals(obj.getUnit())

+     *         && this.getValue().equals(obj.getValue())</code>

+     */

+    @Override

+    public boolean equals(Object obj) {

+        if (!(obj instanceof AbstractQuantity<?>)) {

+            return false;

+        }

+        AbstractQuantity<?> that = (AbstractQuantity<?>) obj;

+        return this.getUnit().equals(that.getUnit()) && this.getValue().equals(that.value());

+    }

+

+    /**

+     * Compares this measure and the specified IMeasure to the given accuracy.

+     * IMeasures are considered approximately equals if their absolute

+     * differences when stated in the same specified unit is less than the

+     * specified epsilon.

+     *

+     * @param that the IMeasure to compare with.

+     * @param epsilon the absolute error stated in epsilonUnit.

+     * @param epsilonUnit the epsilon unit.

+     * @return <code>abs(this.doubleValue(epsilonUnit) - that.doubleValue(epsilonUnit)) &lt;= epsilon</code>

+     */

+    public boolean equals(AbstractQuantity<Q> that, double epsilon, Unit<Q> epsilonUnit) {

+        return Math.abs(this.doubleValue(epsilonUnit) - that.doubleValue(epsilonUnit)) <= epsilon;

+    }

+

+    /**

+     * Returns the hash code for this measure.

+     *

+     * @return the hash code value.

+     */

+    @Override

+    public int hashCode() {

+        return getUnit().hashCode() + getValue().hashCode();

+    }

+

+    public abstract boolean isBig();

+    

+    /**

+     * Returns the <code>String</code> representation of this measure. The

+     * string produced for a given measure is always the same; it is not

+     * affected by locale. This means that it can be used as a canonical string

+     * representation for exchanging measure, or as a key for a Hashtable, etc.

+     * Locale-sensitive measure formatting and parsing is handled by the

+     * {@link IMeasureFormat} class and its subclasses.

+     *

+     * @return <code>UnitFormat.getInternational().format(this)</code>

+     */

+    @Override

+    public String toString() {

+        //return MeasureFormat.getStandard().format(this); TODO improve MeasureFormat

+    	return String.valueOf(getValue()) + " " + String.valueOf(getUnit());

+    }

+

+    public abstract BigDecimal decimalValue(Unit<Q> unit, MathContext ctx)

+            throws ArithmeticException;

+    

+    public abstract  double doubleValue(Unit<Q> unit)

+            throws ArithmeticException;

+    

+    // Implements AbstractIMeasure

+    public final int intValue(Unit<Q> unit) throws ArithmeticException {

+        long longValue = longValue(unit);

+        if ((longValue < Integer.MIN_VALUE) || (longValue > Integer.MAX_VALUE)) {

+            throw new ArithmeticException("Cannot convert " + longValue + " to int (overflow)");

+        }

+        return (int) longValue;

+    }

+

+    public long longValue(Unit<Q> unit) throws ArithmeticException {

+        double result = doubleValue(unit);

+        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {

+            throw new ArithmeticException("Overflow (" + result + ")");

+        }

+        return (long) result;

+    }

+

+    protected final float floatValue(Unit<Q> unit) {

+        return (float) doubleValue(unit);

+    }

+

+    /**

+     * Casts this measure to a parameterized unit of specified nature or throw a

+     * <code>ClassCastException</code> if the dimension of the specified

+     * quantity and this measure unit's dimension do not match. For

+     * example:<br/><code>

+     *     Measure<Length> length = Measure.valueOf("2 km").asType(Length.class);

+     * </code>

+     *

+     * @param type the quantity class identifying the nature of the measure.

+     * @return this measure parameterized with the specified type.

+     * @throws ClassCastException if the dimension of this unit is different

+     *         from the specified quantity dimension.

+     * @throws UnsupportedOperationException

+     *             if the specified quantity class does not have a public static

+     *             field named "UNIT" holding the SI unit for the quantity.

+     * @see Unit#asType(Class)

+     */

+    @SuppressWarnings("unchecked")

+    public final <T extends Quantity<T>> AbstractQuantity<T> asType(Class<T> type)

+            throws ClassCastException {

+        this.getUnit().asType(type); // Raises ClassCastException is dimension

+        // mismatches.

+        return (AbstractQuantity<T>) this;

+    }

+

+    /**

+     * Returns the

+     * {@link #valueOf(java.math.BigDecimal, javax.measure.unit.Unit) decimal}

+     * measure of unknown type corresponding to the specified representation.

+     * This method can be used to parse dimensionless quantities.<br/><code>

+     *     IMeasure<Number, Dimensionless> proportion = Measure.valueOf("0.234").asType(Dimensionless.class);

+     * </code>

+     *

+     * <p> Note: This method handles only

+     * {@link javax.measure.unit.UnitFormat#getStandard standard} unit format

+     * (<a href="http://unitsofmeasure.org/">UCUM</a> based). Locale-sensitive

+     * measure formatting and parsing are handled by the {@link IMeasureFormat}

+     * class and its subclasses.</p>

+     *

+     * @param csq the decimal value and its unit (if any) separated by space(s).

+     * @return <code>MeasureFormat.getStandard().parse(csq, new ParsePosition(0))</code>

+     */

+//    public static AbstractQuantity<?> of(CharSequence csq) {

+//        try {

+//			return QuantityFormat.getInstance(LOCALE_NEUTRAL).parse(csq, new ParsePosition(0));

+//		} catch (IllegalArgumentException | ParserException e) {

+//			throw new IllegalArgumentException(e); // TODO could we handle this differently?

+//		}

+//    }

+

+    /**

+     * Returns the scalar measure for the specified <code>int</code> stated in

+     * the specified unit.

+     *

+     * @param intValue the IMeasure value.

+     * @param unit the IMeasure unit.

+     * @return the corresponding <code>int</code> measure.

+     */

+    public static <Q extends Quantity<Q>> AbstractQuantity<Q> of(int intValue,

+            Unit<Q> unit) {

+        return new IntegerQuantity<Q>(intValue, unit);

+    }

+

+    private static final class IntegerQuantity<T extends Quantity<T>> extends AbstractQuantity<T> {

+

+        /**

+		 * 

+		 */

+//		private static final long serialVersionUID = 5355395476874521709L;

+		

+		final int value;

+

+        public IntegerQuantity(int value, Unit<T> unit) {

+        	super(unit);

+        	this.value = value;

+        }

+

+        @Override

+        public Integer value() {

+            return value;

+        }

+

+        // Implements IMeasure

+        public double doubleValue(Unit<T> unit) {

+            return (super.unit.equals(unit)) ? value : super.unit.getConverterTo(unit).convert(value);

+        }

+

+        // Implements IMeasure

+        public BigDecimal decimalValue(Unit<T> unit, MathContext ctx)

+                throws ArithmeticException {

+            BigDecimal decimal = BigDecimal.valueOf(value);

+            return (super.unit.equals(unit)) ? decimal : ((AbstractConverter)super.unit.getConverterTo(unit)).convert(decimal, ctx);

+        }

+

+		@Override

+		public long longValue(Unit<T> unit) {

+	        double result = doubleValue(unit);

+	        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {

+	            throw new ArithmeticException("Overflow (" + result + ")");

+	        }

+	        return (long) result;

+		}

+

+		@Override

+		public IMeasure<T> add(IMeasure<T> that) {

+			// TODO Auto-generated method stub

+			return null;

+		}

+

+		@Override

+		public IntegerQuantity<T> subtract(IMeasure<T> that) {

+			// TODO Auto-generated method stub

+			return null;

+		}

+

+		@Override

+		public IMeasure<?> multiply(IMeasure<?> that) {

+			// TODO Auto-generated method stub

+			return null;

+		}

+

+		@Override

+		public IMeasure<?> multiply(Number that) {

+			// TODO Auto-generated method stub

+			return null;

+		}

+

+		@Override

+		public IMeasure<?> divide(IMeasure<?> that) {

+			return of((double)value / that.value().doubleValue(), getUnit().divide(that.unit()));

+		}

+

+//		@SuppressWarnings("unchecked")

+//		@Override

+//		public IMeasure<T> inverse() {

+//			return (AbstractQuantity<T>) of(value, getUnit().inverse());

+//		}

+

+		@Override

+		public boolean isBig() {

+			return false;

+		}

+

+

+		@Override

+		public Unit<T> unit() {

+			// TODO Auto-generated method stub

+			return null;

+		}

+

+		@Override

+		public IMeasure<? extends IMeasure<T>> inverse() {

+			// TODO Auto-generated method stub

+			return null;

+		}

+

+		@Override

+		public Number getValue() {

+			return value();

+		}

+

+    }

+    

+    /**

+     * Returns the scalar measure for the specified <code>float</code> stated in

+     * the specified unit.

+     *

+     * @param floatValue the IMeasure value.

+     * @param unit the IMeasure unit.

+     * @return the corresponding <code>float</code> measure.

+     */

+    public static <Q extends Quantity<Q>> AbstractQuantity<Q> of(float floatValue,

+            Unit<Q> unit) {

+        return new FloatQuantity<Q>(floatValue, unit);

+    }

+

+    private static final class FloatQuantity<T extends Quantity<T>> extends AbstractQuantity<T> {

+

+        /**

+		 * 

+		 */

+//		private static final long serialVersionUID = 7857472738562215118L;

+		

+		final float value;

+

+        public FloatQuantity(float value, Unit<T> unit) {

+        	super(unit);

+            this.value = value;

+        }

+

+        @Override

+        public Float value() {

+            return Float.valueOf(value);

+        }

+

+        // Implements AbstractIMeasure

+        public double doubleValue(Unit<T> unit) {

+            return (super.unit.equals(unit)) ? value : super.unit.getConverterTo(unit).convert(value);

+        }

+

+        // Implements AbstractIMeasure

+        public BigDecimal decimalValue(Unit<T> unit, MathContext ctx)

+                throws ArithmeticException {

+            BigDecimal decimal = BigDecimal.valueOf(value); // TODO check value if it is a BD, otherwise use different converter

+            return (super.unit.equals(unit)) ? decimal : ((AbstractConverter)super.unit.getConverterTo(unit)).convert(decimal, ctx);

+        }

+

+		public long longValue(Unit<T> unit) {

+	        double result = doubleValue(unit);

+	        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {

+	            throw new ArithmeticException("Overflow (" + result + ")");

+	        }

+	        return (long) result;

+		}

+

+		@Override

+		public AbstractQuantity<T> add(IMeasure<T> that) {

+			return of(value + that.value().floatValue(), getUnit()); // TODO use shift of the unit?

+		}

+

+		@Override

+		public AbstractQuantity<T> subtract(IMeasure<T> that) {

+			return of(value - that.value().floatValue(), getUnit()); // TODO use shift of the unit?

+		}

+

+		@SuppressWarnings("unchecked")

+		@Override

+		public AbstractQuantity<T> multiply(IMeasure<?> that) {

+			return (AbstractQuantity<T>) of(value * that.value().floatValue(), 

+					getUnit().multiply(that.unit()));

+		}

+

+		@Override

+		public IMeasure<?> multiply(Number that) {

+			return of(value * that.floatValue(), 

+					getUnit().multiply(that.doubleValue()));

+		}

+

+		@Override

+		public IMeasure<?> divide(IMeasure<?> that) {

+			return of(value / that.value().floatValue(), getUnit().divide(that.unit()));

+		}

+

+		@SuppressWarnings("unchecked")

+		@Override

+		public IMeasure<? extends IMeasure<T>> inverse() {

+			return (IMeasure<? extends IMeasure<T>>) of(value, getUnit().inverse());

+		}

+

+		@Override

+		public boolean isBig() {

+			return false;

+		}

+

+		public IMeasure<?> divide(Number that) {

+			return of(value / that.floatValue(), getUnit());

+		}

+

+		@Override

+		public Number getValue() {

+			return value();

+		}

+    }

+

+    /**

+     * Returns the scalar measure for the specified <code>double</code> stated

+     * in the specified unit.

+     *

+     * @param doubleValue the IMeasure value.

+     * @param unit the IMeasure unit.

+     * @return the corresponding <code>double</code> measure.

+     */

+    public static <Q extends Quantity<Q>> AbstractQuantity<Q> of(double doubleValue,

+            Unit<Q> unit) {

+        return new DoubleQuantity<Q>(doubleValue, unit);

+    }

+

+    private static final class DoubleQuantity<T extends Quantity<T>> extends AbstractQuantity<T> {

+

+        final double value;

+

+        public DoubleQuantity(double value, Unit<T> unit) {

+        	super(unit);

+            this.value = value;

+        }

+

+        @Override

+        public Double value() {

+            return Double.valueOf(value);

+        }

+

+

+        public double doubleValue(Unit<T> unit) {

+            return (super.unit.equals(unit)) ? value : super.unit.getConverterTo(unit).convert(value);

+        }

+

+        @Override

+        public BigDecimal decimalValue(Unit<T> unit, MathContext ctx)

+                throws ArithmeticException {

+            BigDecimal decimal = BigDecimal.valueOf(value); // TODO check value if it is a BD, otherwise use different converter

+            return (super.unit.equals(unit)) ? decimal : ((AbstractConverter)super.unit.getConverterTo(unit)).convert(decimal, ctx);

+        }

+

+		@Override

+		public long longValue(Unit<T> unit) {

+	        double result = doubleValue(unit);

+	        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {

+	            throw new ArithmeticException("Overflow (" + result + ")");

+	        }

+	        return (long) result;

+		}

+

+		@Override

+		public IMeasure<T> add(IMeasure<T> that) {

+			return of(value + that.value().doubleValue(), getUnit()); // TODO use shift of the unit?

+		}

+

+		@Override

+		public IMeasure<T> subtract(IMeasure<T> that) {

+			return of(value - that.value().doubleValue(), getUnit()); // TODO use shift of the unit?

+		}

+

+		@Override

+		public IMeasure<?> multiply(IMeasure<?> that) {

+			return of(value * that.value().doubleValue(), getUnit().multiply(that.unit()));

+		}

+

+		@Override

+		public IMeasure<?> multiply(Number that) {

+			return of(value * that.doubleValue(), getUnit());

+		}

+

+		@Override

+		public IMeasure<?> divide(IMeasure<?> that) {

+			return of(value / that.value().doubleValue(), getUnit().divide(that.unit()));

+		}

+		

+		public IMeasure<?> divide(Number that) {

+			return of(value / that.doubleValue(), getUnit());

+		}

+

+//		@SuppressWarnings("unchecked")

+//		@Override

+//		public IMeasure<T> inverse() {

+//			return (AbstractQuantity<T>) of(value, getUnit().inverse());

+//		}

+

+		@Override

+		public boolean isBig() {

+			return false;

+		}

+

+		@Override

+		public IMeasure<? extends IMeasure<T>> inverse() {

+			// TODO Auto-generated method stub

+			return null;

+		}

+

+		@Override

+		public Number getValue() {

+			return value();

+		}

+    }

+

+    /**

+     * Returns the scalar measure for the specified <code>BigDecimal</code>

+     * stated in the specified unit.

+     *

+     * @param decimalValue the IMeasure value.

+     * @param unit the IMeasure unit.

+     * @return the corresponding <code>BigDecimal</code> measure.

+     */

+    public static <Q extends Quantity<Q>> AbstractQuantity<Q> of(

+            BigDecimal decimalValue, Unit<Q> unit) {

+        return new DecimalQuantity<Q>(decimalValue, unit);

+    }

+    

+    private static final class DecimalQuantity<T extends Quantity<T>> extends AbstractQuantity<T> {

+

+        /**

+		 * 

+		 */

+//		private static final long serialVersionUID = 6504081836032983882L;

+		final BigDecimal value;

+

+        public DecimalQuantity(BigDecimal value, Unit<T> unit) {

+        	super(unit);

+        	this.value = value;

+        }

+

+        @Override

+        public BigDecimal value() {

+            return value;

+        }

+

+        // Implements AbstractIMeasure

+        public double doubleValue(Unit<T> unit) {

+            return (unit.equals(unit)) ? value.doubleValue() : unit.getConverterTo(unit).convert(value.doubleValue());

+        }

+

+        // Implements AbstractIMeasure

+        public BigDecimal decimalValue(Unit<T> unit, MathContext ctx)

+                throws ArithmeticException {

+            return (super.unit.equals(unit)) ? value :

+            	((AbstractConverter)unit.getConverterTo(unit)).convert(value, ctx);

+        }

+

+		@Override

+		public IMeasure<T> add(IMeasure<T> that) {

+			return of(value.add((BigDecimal)that.value()), getUnit()); // TODO use shift of the unit?

+		}

+

+		@Override

+		public IMeasure<T> subtract(IMeasure<T> that) {

+			return of(value.subtract((BigDecimal)that.value()), getUnit()); // TODO use shift of the unit?

+		}

+

+		@Override

+		public AbstractQuantity<?> multiply(IMeasure<?> that) {

+			return of(value.multiply((BigDecimal)that.value()), 

+					getUnit().multiply(that.unit()));

+		}

+

+		@Override

+		public IMeasure<?> multiply(Number that) {

+			return of(value.multiply((BigDecimal)that), getUnit());

+		}

+

+		@Override

+		public IMeasure<?> divide(IMeasure<?> that) {

+			return of(value.divide((BigDecimal)that.value()), getUnit());

+		}

+

+		public IMeasure<?> divide(Number that) {

+			return of(value.divide((BigDecimal)that), getUnit());

+		}

+		

+//		@SuppressWarnings("unchecked")

+//		@Override

+//		public AbstractQuantity<T> inverse() {

+//			//return of(value.negate(), getUnit());

+//			return (AbstractQuantity<T>) of(value, getUnit().inverse());

+//		}

+

+		public long longValue(Unit<T> unit) {

+	        double result = doubleValue(unit);

+	        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {

+	            throw new ArithmeticException("Overflow (" + result + ")");

+	        }

+	        return (long) result;

+		}

+

+		@Override

+		public boolean isBig() {

+			return false;

+		}

+

+		@Override

+		public Number getValue() {

+			return value();

+		}

+

+		@Override

+		public IMeasure<? extends IMeasure<T>> inverse() {

+			return (IMeasure<? extends IMeasure<T>>) of(value, getUnit().inverse());

+		}

+    }   

+

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/Activator.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/Activator.java
index 4520aed..dbdb4fa 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/Activator.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/Activator.java
@@ -1,135 +1,135 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, JScience and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.units;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.Locale;
-
-import org.eclipse.uomo.units.impl.format.UnitFormatServiceImpl;
-import org.eclipse.uomo.units.impl.system.SystemOfUnitsServiceImpl;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceListener;
-import org.osgi.util.tracker.ServiceTracker;
-import org.unitsofmeasurement.service.UnitFormatService;
-import org.unitsofmeasurement.service.SystemOfUnitsService;
-import org.unitsofmeasurement.unit.SystemOfUnits;
-
-/**
- * OSGi part of implementation.
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 0.5.2 ($Revision: 215 $), $Date: 2010-09-19 22:12:08 +0200 (So, 19 Sep 2010) $
- */
-public class Activator implements BundleActivator, ServiceListener {
-	private SystemOfUnitsService souService;
-	private ServiceTracker souServiceTracker;
-	private UnitFormatService formatService;
-	private ServiceTracker formatServiceTracker;
-	private BundleContext fContext;
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		fContext = context;
-		
-		// register the services
-		startFormat(context, null);
-		startSOU(context, null);
-//		startDictionary(context, props);
-	}
-	
-	private void startFormat(BundleContext context, Dictionary<String, ?> props) throws Exception {
-		formatService = new UnitFormatServiceImpl();
-		
-		// register the service
-		context.registerService(UnitFormatService.class.getName(), formatService, props);
-
-		// create a tracker and track the service
-		formatServiceTracker = new ServiceTracker(context, UnitFormatService.class.getName(), null);
-		formatServiceTracker.open();
-
-		// have a service listener to implement the whiteboard pattern
-	    fContext.addServiceListener(this, "(objectclass=" + Locale.class.getName() + ")");
-		
-		// grab the service
-//		formatService = (LocalFormatService) formatServiceTracker.getService();
-		
-		// register the locale
-//		formatService.registerDictionary(new DictionaryImpl());
-	}
-	
-	private void startSOU(BundleContext context, Dictionary<String, ?> props) throws Exception {
-		souService = new SystemOfUnitsServiceImpl();
-		
-		// register the service
-		context.registerService(SystemOfUnitsService.class.getName(), souService, props);
-
-		// create a tracker and track the service
-		souServiceTracker = new ServiceTracker(context, SystemOfUnitsService.class.getName(), null);
-		souServiceTracker.open();
-
-		// have a service listener to implement the whiteboard pattern
-	    fContext.addServiceListener(this, "(objectclass=" + SystemOfUnits.class.getName() + ")");
-		
-		// grab the service
-//		formatService = (LocalFormatService) formatServiceTracker.getService();
-		
-	}	
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		// close the service tracker(s)
-		stopFormat();
-		stopSOU();
-//		stopDictionary();
-		fContext = null;
-	}
-	
-	private void stopFormat() throws Exception {
-		formatServiceTracker.close();
-		formatServiceTracker = null;
-
-		formatService = null;
-	}
-	
-	private void stopSOU() throws Exception {
-		souServiceTracker.close();
-		souServiceTracker = null;
-
-		souService = null;
-	}
-
-	public void serviceChanged(ServiceEvent ev) {
-//		ServiceReference sr = ev.getServiceReference();
-		switch(ev.getType()) {
-			case ServiceEvent.REGISTERED:
-			{
-//				Dictionary dictionary = (Dictionary) fContext.getService(sr);
-//				dictService.registerDictionary(dictionary);
-			}
-			break;
-			case ServiceEvent.UNREGISTERING:
-			{
-//				Dictionary dictionary = (Dictionary) fContext.getService(sr);
-//				dictService.unregisterDictionary(dictionary);
-			}
-			break;
-		}
-	}
-
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, JScience and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.units;

+

+import java.util.Dictionary;

+import java.util.Hashtable;

+import java.util.Locale;

+

+import org.eclipse.uomo.units.impl.format.UnitFormatServiceImpl;

+import org.eclipse.uomo.units.impl.system.SystemOfUnitsServiceImpl;

+import org.osgi.framework.BundleActivator;

+import org.osgi.framework.BundleContext;

+import org.osgi.framework.ServiceEvent;

+import org.osgi.framework.ServiceListener;

+import org.osgi.util.tracker.ServiceTracker;

+import org.unitsofmeasurement.service.UnitFormatService;

+import org.unitsofmeasurement.service.SystemOfUnitsService;

+import org.unitsofmeasurement.unit.SystemOfUnits;

+

+/**

+ * OSGi part of implementation.

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 0.5.2 ($Revision: 215 $), $Date: 2010-09-19 22:12:08 +0200 (So, 19 Sep 2010) $

+ */

+public class Activator implements BundleActivator, ServiceListener {

+	private SystemOfUnitsService souService;

+	private ServiceTracker souServiceTracker;

+	private UnitFormatService formatService;

+	private ServiceTracker formatServiceTracker;

+	private BundleContext fContext;

+	

+	/*

+	 * (non-Javadoc)

+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)

+	 */

+	public void start(BundleContext context) throws Exception {

+		fContext = context;

+		

+		// register the services

+		startFormat(context, null);

+		startSOU(context, null);

+//		startDictionary(context, props);

+	}

+	

+	private void startFormat(BundleContext context, Dictionary<String, ?> props) throws Exception {

+		formatService = new UnitFormatServiceImpl();

+		

+		// register the service

+		context.registerService(UnitFormatService.class.getName(), formatService, props);

+

+		// create a tracker and track the service

+		formatServiceTracker = new ServiceTracker(context, UnitFormatService.class.getName(), null);

+		formatServiceTracker.open();

+

+		// have a service listener to implement the whiteboard pattern

+	    fContext.addServiceListener(this, "(objectclass=" + Locale.class.getName() + ")");

+		

+		// grab the service

+//		formatService = (LocalFormatService) formatServiceTracker.getService();

+		

+		// register the locale

+//		formatService.registerDictionary(new DictionaryImpl());

+	}

+	

+	private void startSOU(BundleContext context, Dictionary<String, ?> props) throws Exception {

+		souService = new SystemOfUnitsServiceImpl();

+		

+		// register the service

+		context.registerService(SystemOfUnitsService.class.getName(), souService, props);

+

+		// create a tracker and track the service

+		souServiceTracker = new ServiceTracker(context, SystemOfUnitsService.class.getName(), null);

+		souServiceTracker.open();

+

+		// have a service listener to implement the whiteboard pattern

+	    fContext.addServiceListener(this, "(objectclass=" + SystemOfUnits.class.getName() + ")");

+		

+		// grab the service

+//		formatService = (LocalFormatService) formatServiceTracker.getService();

+		

+	}	

+

+	/*

+	 * (non-Javadoc)

+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)

+	 */

+	public void stop(BundleContext context) throws Exception {

+		// close the service tracker(s)

+		stopFormat();

+		stopSOU();

+//		stopDictionary();

+		fContext = null;

+	}

+	

+	private void stopFormat() throws Exception {

+		formatServiceTracker.close();

+		formatServiceTracker = null;

+

+		formatService = null;

+	}

+	

+	private void stopSOU() throws Exception {

+		souServiceTracker.close();

+		souServiceTracker = null;

+

+		souService = null;

+	}

+

+	public void serviceChanged(ServiceEvent ev) {

+//		ServiceReference sr = ev.getServiceReference();

+		switch(ev.getType()) {

+			case ServiceEvent.REGISTERED:

+			{

+//				Dictionary dictionary = (Dictionary) fContext.getService(sr);

+//				dictService.registerDictionary(dictionary);

+			}

+			break;

+			case ServiceEvent.UNREGISTERING:

+			{

+//				Dictionary dictionary = (Dictionary) fContext.getService(sr);

+//				dictService.unregisterDictionary(dictionary);

+			}

+			break;

+		}

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/IMeasure.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/IMeasure.java
index 5297bf7..b75aa18 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/IMeasure.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/IMeasure.java
@@ -1,121 +1,121 @@
-/**
- * Copyright (c) 2005, 2012, Werner Keil, JScience and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.units;
-
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * <p> This interface represents the IMeasure, countable, or comparable 
- *     property or aspect of a thing.</p>
- *     
- * <p> Implementing instances are typically the result of a measurement:[code]
- *         IMeasure<Mass> weight = BaseAmount.valueOf(180.0, POUND);
- *     [/code]
- *     They can also be created from custom classes:[code]
- *     class Delay implements IMeasure<Duration> {
- *          private long nanoSeconds; // Implicit internal unit.
- *          public double doubleValue(Unit<Velocity> unit) { ... }
- *          public long longValue(Unit<Velocity> unit) { ... }
- *     }
- *     Thread.wait(new Delay(24, HOUR)); // Assuming Thread.wait(IMeasure<Duration>) method.
- *     [/code]</p>
- *     
- * <p> Although IMeasure instances are for the most part scalar quantities; 
- *     more complex implementations (e.g. vectors, data set) are allowed as 
- *     long as an aggregate magnitude can be determined. For example:[code]
- *     class Velocity3D implements IMeasure<Velocity> {
- *          private double x, y, z; // Meter per seconds.
- *          public double doubleValue(Unit<Velocity> unit) { ... } // Returns vector norm.
- *          ... 
- *     }
- *     class Sensors<Q extends Quantity> extends QuantityAmount<double[], Q> {
- *          public doubleValue(Unit<Q> unit) { ... } // Returns median value. 
- *          ...
- *     } [/code]</p>
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 0.4.2, $Date: 2014-08-03 $
- * @param <Q>
- */
-public interface IMeasure<Q extends Quantity<Q>> extends Quantity<Q> {    
-        
-    /**
-     * Returns the sum of this amount with the one specified.
-     *
-     * @param  that the amount to be added.
-     * @return <code>this + that</code>.
-     */
-    IMeasure<Q> add(IMeasure<Q> that);
-    
-    /**
-     * Returns the difference between this amount and the one specified.
-     *
-     * @param  that the number to be subtracted.
-     * @return <code>this - that</code>.
-     */
-    IMeasure<Q> subtract(IMeasure<Q> that);
-    
-    /**
-     * Returns the product of this amount with the one specified.
-     *
-     * @param  that the amount multiplier.
-     * @return <code>this · that</code>.
-     */
-    IMeasure<?> multiply(IMeasure<?> that);
-    
-    /**
-     * Returns the product of this amount with the number specified.
-     *
-     * @param  that the number multiplier.
-     * @return <code>this · that</code>.
-     */
-    IMeasure<?> multiply(Number that);
-    
-    /**
-     * Returns this amount divided by the one specified.
-     *
-     * @param  that the amount divisor.
-     * @return <code>this / that</code>.
-     */
-    IMeasure<?> divide(IMeasure<?> that);
-    
-    IMeasure<? extends IMeasure<Q>> inverse();
-    
-    /**
-     * Returns this measurement converted into another unit.
-     * 
-     * @param unit
-     * @return the converted result.
-     */
-    IMeasure<Q> to(Unit<Q> unit);
-    
-    /**
-     * Returns the value of this quantity as <code>double</code> stated
-     * in the specified unit. This method is recommended over <code>
-     * q.getUnit().getConverterTo(unit).convert(q.getValue()).doubleValue()</code>
-     *
-     * @param unit the unit in which the returned value is stated.
-     * @return the value of this quantity when stated in the specified unit.
-     */
-    public double doubleValue(Unit<Q> unit);
-    
-    /**
-     * Returns the value of this quantity as <code>long</code> stated
-     * in the specified unit. This method is recommended over <code>
-     * q.getUnit().getConverterTo(unit).convert(q.getValue()).longValue()</code>
-     *
-     * @param unit the unit in which the returned value is stated.
-     * @return the value of this quantity when stated in the specified unit.
-     */
-    public long longValue(Unit<Q> unit);
-}
+/**

+ * Copyright (c) 2005, 2012, Werner Keil, JScience and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.units;

+

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * <p> This interface represents the IMeasure, countable, or comparable 

+ *     property or aspect of a thing.</p>

+ *     

+ * <p> Implementing instances are typically the result of a measurement:[code]

+ *         IMeasure<Mass> weight = BaseAmount.valueOf(180.0, POUND);

+ *     [/code]

+ *     They can also be created from custom classes:[code]

+ *     class Delay implements IMeasure<Duration> {

+ *          private long nanoSeconds; // Implicit internal unit.

+ *          public double doubleValue(Unit<Velocity> unit) { ... }

+ *          public long longValue(Unit<Velocity> unit) { ... }

+ *     }

+ *     Thread.wait(new Delay(24, HOUR)); // Assuming Thread.wait(IMeasure<Duration>) method.

+ *     [/code]</p>

+ *     

+ * <p> Although IMeasure instances are for the most part scalar quantities; 

+ *     more complex implementations (e.g. vectors, data set) are allowed as 

+ *     long as an aggregate magnitude can be determined. For example:[code]

+ *     class Velocity3D implements IMeasure<Velocity> {

+ *          private double x, y, z; // Meter per seconds.

+ *          public double doubleValue(Unit<Velocity> unit) { ... } // Returns vector norm.

+ *          ... 

+ *     }

+ *     class Sensors<Q extends Quantity> extends QuantityAmount<double[], Q> {

+ *          public doubleValue(Unit<Q> unit) { ... } // Returns median value. 

+ *          ...

+ *     } [/code]</p>

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 0.4.2, $Date: 2014-08-03 $

+ * @param <Q>

+ */

+public interface IMeasure<Q extends Quantity<Q>> extends Quantity<Q> {    

+        

+    /**

+     * Returns the sum of this amount with the one specified.

+     *

+     * @param  that the amount to be added.

+     * @return <code>this + that</code>.

+     */

+    IMeasure<Q> add(IMeasure<Q> that);

+    

+    /**

+     * Returns the difference between this amount and the one specified.

+     *

+     * @param  that the number to be subtracted.

+     * @return <code>this - that</code>.

+     */

+    IMeasure<Q> subtract(IMeasure<Q> that);

+    

+    /**

+     * Returns the product of this amount with the one specified.

+     *

+     * @param  that the amount multiplier.

+     * @return <code>this · that</code>.

+     */

+    IMeasure<?> multiply(IMeasure<?> that);

+    

+    /**

+     * Returns the product of this amount with the number specified.

+     *

+     * @param  that the number multiplier.

+     * @return <code>this · that</code>.

+     */

+    IMeasure<?> multiply(Number that);

+    

+    /**

+     * Returns this amount divided by the one specified.

+     *

+     * @param  that the amount divisor.

+     * @return <code>this / that</code>.

+     */

+    IMeasure<?> divide(IMeasure<?> that);

+    

+    IMeasure<? extends IMeasure<Q>> inverse();

+    

+    /**

+     * Returns this measurement converted into another unit.

+     * 

+     * @param unit

+     * @return the converted result.

+     */

+    IMeasure<Q> to(Unit<Q> unit);

+    

+    /**

+     * Returns the value of this quantity as <code>double</code> stated

+     * in the specified unit. This method is recommended over <code>

+     * q.getUnit().getConverterTo(unit).convert(q.getValue()).doubleValue()</code>

+     *

+     * @param unit the unit in which the returned value is stated.

+     * @return the value of this quantity when stated in the specified unit.

+     */

+    public double doubleValue(Unit<Q> unit);

+    

+    /**

+     * Returns the value of this quantity as <code>long</code> stated

+     * in the specified unit. This method is recommended over <code>

+     * q.getUnit().getConverterTo(unit).convert(q.getValue()).longValue()</code>

+     *

+     * @param unit the unit in which the returned value is stated.

+     * @return the value of this quantity when stated in the specified unit.

+     */

+    public long longValue(Unit<Q> unit);

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/IState.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/IState.java
index e2ac49f..d04aa38 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/IState.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/IState.java
@@ -1,28 +1,28 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, JScience and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.units;
-
-import org.eclipse.uomo.core.IName;
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.quantity.Time;
-
-/**
- * Groups a state name, value and timestamp.
- * The state itself is represented as a <type>Number</type> and the time is measured in IMeasure<Time>
- * A State object is immutable so that it may be easily shared.
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.1, $Date: 2011-04-07 02:02:02 +0430 $
- */
-public interface IState<Q extends Quantity<Q>> extends IName {
-	IMeasure<Time> time();
-	IMeasure<Q> value(); // TODO get* vs. getter-less, also avoid value().value()
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, JScience and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.units;

+

+import org.eclipse.uomo.core.IName;

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.quantity.Time;

+

+/**

+ * Groups a state name, value and timestamp.

+ * The state itself is represented as a <type>Number</type> and the time is measured in IMeasure<Time>

+ * A State object is immutable so that it may be easily shared.

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.1, $Date: 2011-04-07 02:02:02 +0430 $

+ */

+public interface IState<Q extends Quantity<Q>> extends IName {

+	IMeasure<Time> time();

+	IMeasure<Q> value(); // TODO get* vs. getter-less, also avoid value().value()

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/BaseAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/BaseAmount.java
index 14aaa0f..a254035 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/BaseAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/BaseAmount.java
@@ -1,324 +1,324 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.units.impl;
-
-import static org.eclipse.uomo.core.impl.OutputHelper.println;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.math.MathContext;
-
-import org.eclipse.uomo.units.AbstractConverter;
-import org.eclipse.uomo.units.AbstractQuantity;
-import org.eclipse.uomo.units.AbstractUnit;
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.impl.converter.RationalConverter;
-import org.eclipse.uomo.units.internal.MeasureAmount;
-import org.unitsofmeasurement.quantity.Dimensionless;
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-import com.ibm.icu.util.Measure;
-import com.ibm.icu.util.MeasureUnit;
-
-/**
- * Represents a generic quantity amount.
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.3.3, $Date: 2013-05-21 $
- * @deprecated use BaseQuantity
- */
-public class BaseAmount<Q extends Quantity<Q>> extends AbstractQuantity<Q>
-		implements Comparable<BaseAmount<Q>> {
-	
-	private final Measure measure;
-	
-	/**
-	 * @param number
-	 * @param unit
-	 */
-	public BaseAmount(Number number, Unit<Q> unit) {
-		super(unit);
-		measure = MeasureAmount.of(number,  (MeasureUnit)unit);
-		//super(number, (MeasureUnit) unit);
-	}
-
-	/**
-	 * Returns the amount corresponding to the specified value and unit.
-	 * 
-	 * @param value
-	 *            the value stated in the specified unit.
-	 * @param unit
-	 *            the unit in which the value is stated.
-	 * @return the corresponding amount.
-	 */
-	public static <Q extends Quantity<Q>> BaseAmount<Q> valueOf(Number value,
-			Unit<Q> unit) {
-		BaseAmount<Q> amount = new BaseAmount<Q>(value, unit);
-		return amount;
-	}
-
-	/**
-	 * Holds a dimensionless measure of one (exact).
-	 */
-	protected static final BaseAmount<Dimensionless> ONE = new BaseAmount<Dimensionless>(
-			BigDecimal.ONE, AbstractUnit.ONE);
-
-	@SuppressWarnings({ "rawtypes", "unchecked" })
-	public BaseAmount<Q> add(IMeasure<Q> that) {
-		final IMeasure<Q> thatToUnit = that.to(unit());
-		return new BaseAmount(this.value().doubleValue()
-				+ thatToUnit.value().doubleValue(), unit());
-	}
-
-	@SuppressWarnings({ "rawtypes", "unchecked" })
-	@Override
-	public BaseAmount<Q> subtract(IMeasure<Q> that) {
-		final IMeasure<Q> thatToUnit = that.to(unit());
-		return new BaseAmount(this.value().doubleValue()
-				- thatToUnit.value().doubleValue(), unit());
-
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public BaseAmount<Q> multiply(IMeasure<?> that) {
-		Unit<?> unit = unit().multiply(that.unit());
-		return (BaseAmount<Q>) valueOf((value().doubleValue() * that.value()
-				.doubleValue()), unit);
-	}
-	
-	@Override
-	public BaseAmount<?> multiply(Number that) {
-		return (BaseAmount<Q>) valueOf((value().doubleValue() * that
-				.doubleValue()), unit());	
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public BaseAmount<Q> divide(IMeasure<?> that) {
-		Unit<?> unit = unit().divide(that.unit());
-		return (BaseAmount<Q>) valueOf((value().doubleValue() / that.value()
-				.doubleValue()), unit);
-	}
-
-	@Override
-	public BaseAmount<Q> to(Unit<Q> unit) {
-		return to(unit, MathContext.DECIMAL128);
-	}
-
-	public BaseAmount<Q> to(Unit<Q> unit, MathContext ctx) {
-		if (this.unit().equals(unit))
-			return this;
-		UnitConverter cvtr = this.unit().getConverterTo(unit);
-		if (cvtr == AbstractConverter.IDENTITY)
-			return (BaseAmount<Q>) valueOf(this.value(), unit);
-		return (BaseAmount<Q>) valueOf(convert(this.value(), cvtr, ctx), unit);
-	}
-
-	// Try to convert the specified value.
-	private static Number convert(Number value, UnitConverter cvtr,
-			MathContext ctx) {
-		if (cvtr instanceof RationalConverter) { // Try converting through Field
-													// methods.
-			RationalConverter rCvtr = (RationalConverter) cvtr;
-			BigInteger dividend = rCvtr.getDividend();
-			BigInteger divisor = rCvtr.getDivisor();
-			if (dividend.abs().compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)
-				throw new ArithmeticException("Multiplier overflow"); //$NON-NLS-1$
-			if (divisor.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)
-				throw new ArithmeticException("Divisor overflow"); //$NON-NLS-1$
-			if (value instanceof BigInteger || value instanceof Long || value instanceof Integer) {
-				return (value.longValue() * dividend.longValue())
-					/ (divisor.longValue());
-			} else {
-				return (value.doubleValue() * dividend.doubleValue())
-					/ (divisor.doubleValue());
-				// TODO use actual BigDecimal methods for BigDecimal
-			}
-		} else if (cvtr instanceof AbstractConverter.Compound
-				&& cvtr.isLinear()) { // Do it in two parts.
-			AbstractConverter.Compound compound = (AbstractConverter.Compound) cvtr;
-			Number firstConversion = convert(value, compound.getRight(), ctx);
-			Number secondConversion = convert(firstConversion,
-					compound.getLeft(), ctx);
-			return secondConversion;
-		} else { // Try using BigDecimal as intermediate.
-			BigDecimal decimalValue = BigDecimal.valueOf(value.doubleValue());
-			BigDecimal newValue = cvtr.convert(decimalValue, ctx);
-			return newValue;
-			// if (((FieldNumber)value) instanceof Decimal)
-			// return (N)((FieldNumber)Decimal.valueOf(newValue));
-			// if (((FieldNumber)value) instanceof Float64)
-			// return (N)((FieldNumber)Float64.valueOf(newValue.doubleValue()));
-			// throw new ArithmeticException(
-			// "Generic amount conversion not implemented for amount of type " +
-			// value.getClass());
-		}
-	}
-
-	/**
-	 * Returns this measure raised at the specified exponent.
-	 * 
-	 * @param exp
-	 *            the exponent.
-	 * @return <code>this<sup>exp</sup></code>
-	 */
-	@SuppressWarnings("unchecked")
-	public IMeasure<? extends IMeasure<Q>> pow(int exp) {
-		if (exp < 0)
-			return (IMeasure<? extends IMeasure<Q>>) this.pow(-exp).inverse();
-		if (exp == 0)
-
-			return (IMeasure<? extends IMeasure<Q>>) ONE;
-
-		IMeasure<? extends IMeasure<Q>> pow2 = (IMeasure<? extends IMeasure<Q>>) this;
-		IMeasure<? extends IMeasure<Q>> result = null;
-		while (exp >= 1) { // Iteration.
-
-			if ((exp & 1) == 1) {
-				result = (IMeasure<? extends IMeasure<Q>>) ((result == null) ? pow2
-						: result.multiply(pow2));
-
-			}
-
-			pow2 = (IMeasure<? extends IMeasure<Q>>) pow2.multiply(pow2);
-
-			exp >>>= 1;
-
-		}
-
-		return result;
-
-	}
-
-	public IMeasure<? extends IMeasure<Q>> inverse() {
-		@SuppressWarnings({ "rawtypes", "unchecked" })
-		final IMeasure<? extends IMeasure<Q>> m = new BaseAmount(value(),
-				unit().inverse());
-		return m;
-	}
-
-	@Override
-	public int compareTo(BaseAmount<Q> o) {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null)
-			return false;
-		if (obj == this)
-			return true;
-		if (obj instanceof BaseAmount<?>) {
-			BaseAmount<?> ba = (BaseAmount<?>) obj;
-			if (this.unit().getClass() == ba.unit().getClass()) {
-				return super.equals(obj);
-			}
-			if (ba.unit() instanceof AlternateUnit<?>) {
-				AlternateUnit<?> baa = (AlternateUnit<?>) ba.unit();
-				if (this.unit() instanceof AlternateUnit<?>) {
-					return super.equals(obj);
-				} else if (this.unit() instanceof AnnotatedUnit<?>) {
-					AnnotatedUnit<?> au = (AnnotatedUnit<?>) this.unit();
-					println("Ann: " + au); //$NON-NLS-1$
-				} else if (this.unit() instanceof BaseUnit<?>) {
-					BaseUnit<?> bu = (BaseUnit<?>) this.unit();
-					println("Bas: " + bu); //$NON-NLS-1$
-				} else if (this.unit() instanceof ProductUnit<?>) {
-					ProductUnit<?> pu = (ProductUnit<?>) this.unit();
-					println("Pro: " + pu); //$NON-NLS-1$
-				} else if (this.unit() instanceof TransformedUnit<?>) {
-					TransformedUnit<?> tu = (TransformedUnit<?>) this.unit();
-					println("Tran: " + tu); //$NON-NLS-1$
-					if (tu.getParentUnit().equals(baa)) {
-						return true; // FIXME use number here, too
-					}
-				} else {
-					return super.equals(obj);
-				}
-			}
-			if (ba.unit() instanceof BaseUnit<?>) {
-				if (this.unit() instanceof AlternateUnit<?>) {
-					AlternateUnit<?> au = (AlternateUnit<?>) this.unit();
-					println("Alt: " + au); //$NON-NLS-1$
-				} else if (this.unit() instanceof AnnotatedUnit<?>) {
-					AnnotatedUnit<?> au = (AnnotatedUnit<?>) this.unit();
-					println("Ann: " + au); //$NON-NLS-1$
-				} else if (this.unit() instanceof BaseUnit<?>) {
-					return super.equals(obj);
-				} else if (this.unit() instanceof ProductUnit<?>) {
-					ProductUnit<?> pu = (ProductUnit<?>) this.unit();
-					println("Pro: " + pu); //$NON-NLS-1$
-				} else if (this.unit() instanceof TransformedUnit<?>) {
-					TransformedUnit<?> tu = (TransformedUnit<?>) this.unit();
-					println("Tran: " + tu); //$NON-NLS-1$
-				} else {
-					return super.equals(obj);
-				}
-			}
-			if (ba.unit() instanceof TransformedUnit<?>) {
-				TransformedUnit<?> bat = (TransformedUnit<?>) ba.unit();
-				if (this.unit() instanceof AlternateUnit<?>) {
-					AlternateUnit<?> au = (AlternateUnit<?>) this.unit();
-					println("Alt: " + au); //$NON-NLS-1$
-					if (bat.getParentUnit().equals(au)) {
-						return true;
-					}
-				} else if (this.unit() instanceof AnnotatedUnit<?>) {
-					AnnotatedUnit<?> au = (AnnotatedUnit<?>) this.unit();
-					System.out.println("Ann: " + au); //$NON-NLS-1$
-				} else if (this.unit() instanceof BaseUnit<?>) {
-					BaseUnit<?> bu = (BaseUnit<?>) this.unit();
-					println("Bas: " + bu); //$NON-NLS-1$
-				} else if (this.unit() instanceof ProductUnit<?>) {
-					ProductUnit<?> pu = (ProductUnit<?>) this.unit();
-					println("Pro: " + pu); //$NON-NLS-1$
-				} else if (this.unit() instanceof TransformedUnit<?>) {
-					return super.equals(obj);
-				} else {
-					return super.equals(obj);
-				}
-			}
-		}
-		return super.equals(obj);
-	}
-
-	@Override
-	public Number value() {
-		return measure.getNumber();
-	}
-
-	@Override
-	public Number getValue() {
-		return value();
-	}
-
-	@Override
-	public boolean isBig() {
-		return value() instanceof BigDecimal;
-	}
-
-	@Override
-	public BigDecimal decimalValue(Unit<Q> unit, MathContext ctx)
-			throws ArithmeticException {
-		   BigDecimal decimal = (value() instanceof BigDecimal) ? (BigDecimal)value() : BigDecimal.valueOf(value().doubleValue()); // TODO check value if it is a BD, otherwise use different converter
-           return (unit().equals(unit)) ? decimal : ((AbstractConverter)unit().getConverterTo(unit)).convert(decimal, ctx);
-
-	}
-
-	@Override
-	public double doubleValue(Unit<Q> unit) throws ArithmeticException {
-		return (unit().equals(unit)) ? value().doubleValue() : unit().getConverterTo(unit).convert(value().doubleValue());
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl;

+

+import static org.eclipse.uomo.core.impl.OutputHelper.println;

+

+import java.math.BigDecimal;

+import java.math.BigInteger;

+import java.math.MathContext;

+

+import org.eclipse.uomo.units.AbstractConverter;

+import org.eclipse.uomo.units.AbstractQuantity;

+import org.eclipse.uomo.units.AbstractUnit;

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.impl.converter.RationalConverter;

+import org.eclipse.uomo.units.internal.MeasureAmount;

+import org.unitsofmeasurement.quantity.Dimensionless;

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+import com.ibm.icu.util.Measure;

+import com.ibm.icu.util.MeasureUnit;

+

+/**

+ * Represents a generic quantity amount.

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.3.3, $Date: 2013-05-21 $

+ * @deprecated use BaseQuantity

+ */

+public class BaseAmount<Q extends Quantity<Q>> extends AbstractQuantity<Q>

+		implements Comparable<BaseAmount<Q>> {

+	

+	private final Measure measure;

+	

+	/**

+	 * @param number

+	 * @param unit

+	 */

+	public BaseAmount(Number number, Unit<Q> unit) {

+		super(unit);

+		measure = MeasureAmount.of(number,  (MeasureUnit)unit);

+		//super(number, (MeasureUnit) unit);

+	}

+

+	/**

+	 * Returns the amount corresponding to the specified value and unit.

+	 * 

+	 * @param value

+	 *            the value stated in the specified unit.

+	 * @param unit

+	 *            the unit in which the value is stated.

+	 * @return the corresponding amount.

+	 */

+	public static <Q extends Quantity<Q>> BaseAmount<Q> valueOf(Number value,

+			Unit<Q> unit) {

+		BaseAmount<Q> amount = new BaseAmount<Q>(value, unit);

+		return amount;

+	}

+

+	/**

+	 * Holds a dimensionless measure of one (exact).

+	 */

+	protected static final BaseAmount<Dimensionless> ONE = new BaseAmount<Dimensionless>(

+			BigDecimal.ONE, AbstractUnit.ONE);

+

+	@SuppressWarnings({ "rawtypes", "unchecked" })

+	public BaseAmount<Q> add(IMeasure<Q> that) {

+		final IMeasure<Q> thatToUnit = that.to(unit());

+		return new BaseAmount(this.value().doubleValue()

+				+ thatToUnit.value().doubleValue(), unit());

+	}

+

+	@SuppressWarnings({ "rawtypes", "unchecked" })

+	@Override

+	public BaseAmount<Q> subtract(IMeasure<Q> that) {

+		final IMeasure<Q> thatToUnit = that.to(unit());

+		return new BaseAmount(this.value().doubleValue()

+				- thatToUnit.value().doubleValue(), unit());

+

+	}

+

+	@SuppressWarnings("unchecked")

+	@Override

+	public BaseAmount<Q> multiply(IMeasure<?> that) {

+		Unit<?> unit = unit().multiply(that.unit());

+		return (BaseAmount<Q>) valueOf((value().doubleValue() * that.value()

+				.doubleValue()), unit);

+	}

+	

+	@Override

+	public BaseAmount<?> multiply(Number that) {

+		return (BaseAmount<Q>) valueOf((value().doubleValue() * that

+				.doubleValue()), unit());	

+	}

+

+	@SuppressWarnings("unchecked")

+	@Override

+	public BaseAmount<Q> divide(IMeasure<?> that) {

+		Unit<?> unit = unit().divide(that.unit());

+		return (BaseAmount<Q>) valueOf((value().doubleValue() / that.value()

+				.doubleValue()), unit);

+	}

+

+	@Override

+	public BaseAmount<Q> to(Unit<Q> unit) {

+		return to(unit, MathContext.DECIMAL128);

+	}

+

+	public BaseAmount<Q> to(Unit<Q> unit, MathContext ctx) {

+		if (this.unit().equals(unit))

+			return this;

+		UnitConverter cvtr = this.unit().getConverterTo(unit);

+		if (cvtr == AbstractConverter.IDENTITY)

+			return (BaseAmount<Q>) valueOf(this.value(), unit);

+		return (BaseAmount<Q>) valueOf(convert(this.value(), cvtr, ctx), unit);

+	}

+

+	// Try to convert the specified value.

+	private static Number convert(Number value, UnitConverter cvtr,

+			MathContext ctx) {

+		if (cvtr instanceof RationalConverter) { // Try converting through Field

+													// methods.

+			RationalConverter rCvtr = (RationalConverter) cvtr;

+			BigInteger dividend = rCvtr.getDividend();

+			BigInteger divisor = rCvtr.getDivisor();

+			if (dividend.abs().compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)

+				throw new ArithmeticException("Multiplier overflow"); //$NON-NLS-1$

+			if (divisor.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)

+				throw new ArithmeticException("Divisor overflow"); //$NON-NLS-1$

+			if (value instanceof BigInteger || value instanceof Long || value instanceof Integer) {

+				return (value.longValue() * dividend.longValue())

+					/ (divisor.longValue());

+			} else {

+				return (value.doubleValue() * dividend.doubleValue())

+					/ (divisor.doubleValue());

+				// TODO use actual BigDecimal methods for BigDecimal

+			}

+		} else if (cvtr instanceof AbstractConverter.Compound

+				&& cvtr.isLinear()) { // Do it in two parts.

+			AbstractConverter.Compound compound = (AbstractConverter.Compound) cvtr;

+			Number firstConversion = convert(value, compound.getRight(), ctx);

+			Number secondConversion = convert(firstConversion,

+					compound.getLeft(), ctx);

+			return secondConversion;

+		} else { // Try using BigDecimal as intermediate.

+			BigDecimal decimalValue = BigDecimal.valueOf(value.doubleValue());

+			BigDecimal newValue = cvtr.convert(decimalValue, ctx);

+			return newValue;

+			// if (((FieldNumber)value) instanceof Decimal)

+			// return (N)((FieldNumber)Decimal.valueOf(newValue));

+			// if (((FieldNumber)value) instanceof Float64)

+			// return (N)((FieldNumber)Float64.valueOf(newValue.doubleValue()));

+			// throw new ArithmeticException(

+			// "Generic amount conversion not implemented for amount of type " +

+			// value.getClass());

+		}

+	}

+

+	/**

+	 * Returns this measure raised at the specified exponent.

+	 * 

+	 * @param exp

+	 *            the exponent.

+	 * @return <code>this<sup>exp</sup></code>

+	 */

+	@SuppressWarnings("unchecked")

+	public IMeasure<? extends IMeasure<Q>> pow(int exp) {

+		if (exp < 0)

+			return (IMeasure<? extends IMeasure<Q>>) this.pow(-exp).inverse();

+		if (exp == 0)

+

+			return (IMeasure<? extends IMeasure<Q>>) ONE;

+

+		IMeasure<? extends IMeasure<Q>> pow2 = (IMeasure<? extends IMeasure<Q>>) this;

+		IMeasure<? extends IMeasure<Q>> result = null;

+		while (exp >= 1) { // Iteration.

+

+			if ((exp & 1) == 1) {

+				result = (IMeasure<? extends IMeasure<Q>>) ((result == null) ? pow2

+						: result.multiply(pow2));

+

+			}

+

+			pow2 = (IMeasure<? extends IMeasure<Q>>) pow2.multiply(pow2);

+

+			exp >>>= 1;

+

+		}

+

+		return result;

+

+	}

+

+	public IMeasure<? extends IMeasure<Q>> inverse() {

+		@SuppressWarnings({ "rawtypes", "unchecked" })

+		final IMeasure<? extends IMeasure<Q>> m = new BaseAmount(value(),

+				unit().inverse());

+		return m;

+	}

+

+	@Override

+	public int compareTo(BaseAmount<Q> o) {

+		// TODO Auto-generated method stub

+		return 0;

+	}

+

+	@Override

+	public boolean equals(Object obj) {

+		if (obj == null)

+			return false;

+		if (obj == this)

+			return true;

+		if (obj instanceof BaseAmount<?>) {

+			BaseAmount<?> ba = (BaseAmount<?>) obj;

+			if (this.unit().getClass() == ba.unit().getClass()) {

+				return super.equals(obj);

+			}

+			if (ba.unit() instanceof AlternateUnit<?>) {

+				AlternateUnit<?> baa = (AlternateUnit<?>) ba.unit();

+				if (this.unit() instanceof AlternateUnit<?>) {

+					return super.equals(obj);

+				} else if (this.unit() instanceof AnnotatedUnit<?>) {

+					AnnotatedUnit<?> au = (AnnotatedUnit<?>) this.unit();

+					println("Ann: " + au); //$NON-NLS-1$

+				} else if (this.unit() instanceof BaseUnit<?>) {

+					BaseUnit<?> bu = (BaseUnit<?>) this.unit();

+					println("Bas: " + bu); //$NON-NLS-1$

+				} else if (this.unit() instanceof ProductUnit<?>) {

+					ProductUnit<?> pu = (ProductUnit<?>) this.unit();

+					println("Pro: " + pu); //$NON-NLS-1$

+				} else if (this.unit() instanceof TransformedUnit<?>) {

+					TransformedUnit<?> tu = (TransformedUnit<?>) this.unit();

+					println("Tran: " + tu); //$NON-NLS-1$

+					if (tu.getParentUnit().equals(baa)) {

+						return true; // FIXME use number here, too

+					}

+				} else {

+					return super.equals(obj);

+				}

+			}

+			if (ba.unit() instanceof BaseUnit<?>) {

+				if (this.unit() instanceof AlternateUnit<?>) {

+					AlternateUnit<?> au = (AlternateUnit<?>) this.unit();

+					println("Alt: " + au); //$NON-NLS-1$

+				} else if (this.unit() instanceof AnnotatedUnit<?>) {

+					AnnotatedUnit<?> au = (AnnotatedUnit<?>) this.unit();

+					println("Ann: " + au); //$NON-NLS-1$

+				} else if (this.unit() instanceof BaseUnit<?>) {

+					return super.equals(obj);

+				} else if (this.unit() instanceof ProductUnit<?>) {

+					ProductUnit<?> pu = (ProductUnit<?>) this.unit();

+					println("Pro: " + pu); //$NON-NLS-1$

+				} else if (this.unit() instanceof TransformedUnit<?>) {

+					TransformedUnit<?> tu = (TransformedUnit<?>) this.unit();

+					println("Tran: " + tu); //$NON-NLS-1$

+				} else {

+					return super.equals(obj);

+				}

+			}

+			if (ba.unit() instanceof TransformedUnit<?>) {

+				TransformedUnit<?> bat = (TransformedUnit<?>) ba.unit();

+				if (this.unit() instanceof AlternateUnit<?>) {

+					AlternateUnit<?> au = (AlternateUnit<?>) this.unit();

+					println("Alt: " + au); //$NON-NLS-1$

+					if (bat.getParentUnit().equals(au)) {

+						return true;

+					}

+				} else if (this.unit() instanceof AnnotatedUnit<?>) {

+					AnnotatedUnit<?> au = (AnnotatedUnit<?>) this.unit();

+					System.out.println("Ann: " + au); //$NON-NLS-1$

+				} else if (this.unit() instanceof BaseUnit<?>) {

+					BaseUnit<?> bu = (BaseUnit<?>) this.unit();

+					println("Bas: " + bu); //$NON-NLS-1$

+				} else if (this.unit() instanceof ProductUnit<?>) {

+					ProductUnit<?> pu = (ProductUnit<?>) this.unit();

+					println("Pro: " + pu); //$NON-NLS-1$

+				} else if (this.unit() instanceof TransformedUnit<?>) {

+					return super.equals(obj);

+				} else {

+					return super.equals(obj);

+				}

+			}

+		}

+		return super.equals(obj);

+	}

+

+	@Override

+	public Number value() {

+		return measure.getNumber();

+	}

+

+	@Override

+	public Number getValue() {

+		return value();

+	}

+

+	@Override

+	public boolean isBig() {

+		return value() instanceof BigDecimal;

+	}

+

+	@Override

+	public BigDecimal decimalValue(Unit<Q> unit, MathContext ctx)

+			throws ArithmeticException {

+		   BigDecimal decimal = (value() instanceof BigDecimal) ? (BigDecimal)value() : BigDecimal.valueOf(value().doubleValue()); // TODO check value if it is a BD, otherwise use different converter

+           return (unit().equals(unit)) ? decimal : ((AbstractConverter)unit().getConverterTo(unit)).convert(decimal, ctx);

+

+	}

+

+	@Override

+	public double doubleValue(Unit<Q> unit) throws ArithmeticException {

+		return (unit().equals(unit)) ? value().doubleValue() : unit().getConverterTo(unit).convert(value().doubleValue());

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/BaseQuantity.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/BaseQuantity.java
index 6eb4306..153e018 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/BaseQuantity.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/BaseQuantity.java
@@ -1,292 +1,292 @@
-/**
- *  Unit-API - Units of Measurement API for Java
- *  Copyright 2013-2014, Jean-Marie Dautelle, Werner Keil, V2COM and individual
- *  contributors by the @author tag.
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *  http://www.apache.org/licenses/LICENSE-2.0
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.eclipse.uomo.units.impl;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.math.MathContext;
-
-import org.eclipse.uomo.units.AbstractConverter;
-import org.eclipse.uomo.units.AbstractQuantity;
-import org.eclipse.uomo.units.IMeasure;
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.unit.IncommensurableException;
-import org.unitsofmeasurement.unit.UnconvertibleException;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-/**
- * An amount of quantity, consisting of a Number and a Unit. BaseMeasurement
- * objects are immutable.
- * 
- * @see java.lang.Number
- * @see MeasureUnit
- * @author <a href="mailto:units@catmedia.us">Werner Keil</a>
- * @param <Q>
- *            The type of the quantity.
- * @version 1.6, $Date: 2014-04-08 $
- */
-public class BaseQuantity<Q extends Quantity<Q>> extends AbstractQuantity<Q>
-		implements Quantity<Q>, Comparable<BaseQuantity<Q>> {
-//FIXME Bug 338334 overwrite equals()
-    
-
-	/**
-	 * 
-	 */
-//	private static final long serialVersionUID = 7312161895652321241L;
-
-	private final Number value;
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see AbstractMeasurement#equals(java.lang.Object)
-	 */
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null)
-			return false;
-		if (obj == this)
-			return true;
-		if (this.getClass() == obj.getClass()) {
-			return super.equals(obj);
-		} else {
-			if (obj instanceof Quantity) {
-				@SuppressWarnings("rawtypes")
-				Quantity m = (Quantity) obj;
-				if (m.value().getClass() == this.getValue().getClass()
-						&& m.unit().getClass() == this.getUnit().getClass()) {
-					return super.equals(obj);
-				} else {
-					// if (this.getQuantityUnit() instanceof AbstractUnit<?>) {
-					// if
-					// }
-					return super.equals(obj);
-				}
-			}
-			return false;
-		}
-	}
-
-	/**
-	 * Indicates if this measure is exact.
-	 */
-	private final boolean isExact;
-
-	/**
-	 * Indicates if this measure is big.
-	 */
-	private final boolean isBig;
-	
-	/**
-	 * Holds the exact value (when exact) stated in this measure unit.
-	 */
-	// private long exactValue;
-
-	/**
-	 * Holds the minimum value stated in this measure unit. For inexact
-	 * measures: minimum < maximum
-	 */
-	// private double minimum;
-
-	/**
-	 * Holds the maximum value stated in this measure unit. For inexact
-	 * measures: maximum > minimum
-	 */
-	// private double maximum;
-
-	protected BaseQuantity(Number number, Unit<Q> unit) {
-		super(unit);
-		value = number;
-		isExact = false;
-		isBig = false;;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * Measurement#doubleValue(javax.measure.Unit)
-	 */
-	public double doubleValue(Unit<Q> unit) {
-		Unit<Q> myUnit = getUnit();
-		try {
-			UnitConverter converter = unit.getConverterTo(myUnit);
-			return converter.convert(getValue().doubleValue());
-		} catch (UnconvertibleException e) {
-			throw e;
-		} // catch (IncommensurableException e) {
-		// throw new IllegalArgumentException(e.getMessage());
-		// }
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.uomo.units.AbstractMeasurement#longValue(javax.measure
-	 * .Unit)
-	 */
-	public long longValue(Unit<Q> unit) {
-		Unit<Q> myUnit = getUnit();
-		try {
-			UnitConverter converter = unit.getConverterToAny(myUnit);
-			if ((getValue() instanceof BigDecimal || getValue() instanceof BigInteger) 
-					&& converter instanceof AbstractConverter) {
-				return (((AbstractConverter)converter).convert(
-						BigDecimal.valueOf(getValue().longValue()),
-						MathContext.DECIMAL128)).longValue();
-			} else {
-		        double result = doubleValue(unit);
-		        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {
-		            throw new ArithmeticException("Overflow (" + result + ")");
-		        }
-		        return (long) result;
-			}
-		} catch (UnconvertibleException e) {
-			throw e;
-		} catch (IncommensurableException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see javax.measure.Quantity#getValue()
-	 */
-	public Number getValue() {
-		return value;
-	}
-
-	/**
-	 * Indicates if this measured amount is exact. An exact amount is guarantee
-	 * exact only when stated in this measure unit (e.g.
-	 * <code>this.longValue()</code>); stating the amount in any other unit may
-	 * introduce conversion errors.
-	 * 
-	 * @return <code>true</code> if this measure is exact; <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean isExact() {
-		return isExact;
-	}
-	
-	/**
-	 * Indicates if this measured amount is a big number, i.E. BigDecimal or BigInteger.
-	 * In all other cases this would be false.
-	 * 
-	 * @return <code>true</code> if this measure is big; <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean isBig() {
-		return isBig;
-	}
-	
-	@SuppressWarnings({ "rawtypes", "unchecked" })
-	public BaseQuantity<Q> add(AbstractQuantity<Q> that) {
-		final AbstractQuantity<Q> thatToUnit = that.to(getUnit());
-		return new BaseQuantity(this.getValue().doubleValue()
-				+ thatToUnit.getValue().doubleValue(), 
-                                  getUnit());
-	}
-	
-	public String toString() {
-		return  String.valueOf(getValue()) + " " 
-                        + String.valueOf(getUnit());
-	}
-
-	@Override
-	public IMeasure<Q> add(IMeasure<Q> that) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public IMeasure<Q> subtract(IMeasure<Q> that) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public IMeasure<?> multiply(IMeasure<?> that) {
-		final Unit<?> unit = getUnit().multiply(that.unit());
-		return of((getValue().doubleValue() * that.value()
-				.doubleValue()), unit);	
-	}
-        
-        @Override
-	public BaseQuantity<?> multiply(Number that) {
-		return (BaseQuantity<Q>) of((getValue().doubleValue() * that
-				.doubleValue()), getUnit());	
-	}
-        
-	@Override
-	public IMeasure<?> divide(IMeasure<?> that) {
-		final Unit<?> unit = getUnit().divide(that.unit());
-		return of((getValue().doubleValue() / that.value()
-				.doubleValue()), unit);	
-	}
-
-	public IMeasure<?> divide(Number that) {
-		// TODO may use isBig() here, too
-		if (value instanceof BigDecimal && that instanceof BigDecimal) {
-			return of(((BigDecimal)value).divide((BigDecimal)that), 
-                                getUnit());
-		}
-		return of(getValue().doubleValue() / that.doubleValue(), 
-                        getUnit());	
-	}
-	
-//	@Override
-//	public IMeasure<Q> inverse() {
-//		@SuppressWarnings({ "rawtypes", "unchecked" })
-//		final IMeasure<Q> m = new BaseQuantity(getValue(),
-//				getUnit().inverse()); // TODO keep value same?
-//		return m;
-//	}
-
-	@Override
-	public BigDecimal decimalValue(Unit<Q> unit, MathContext ctx)
-			throws ArithmeticException {
-		if (value instanceof BigDecimal) {
-                    return (BigDecimal)value;
-                }
-                if (value instanceof BigInteger) {
-                    return new BigDecimal((BigInteger)value);
-                }
-		return BigDecimal.valueOf(value.doubleValue());
-	}
-
-	@Override
-	public int compareTo(BaseQuantity<Q> o) {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	@Override
-	public Number value() {
-		return getValue();
-	}
-
-	@Override
-	public IMeasure<? extends IMeasure<Q>> inverse() {
-		final IMeasure<? extends IMeasure<Q>> m = new BaseQuantity(getValue(),
-		getUnit().inverse()); // TODO keep value same?
-		return m;
-	}
-}
+/**

+ *  Unit-API - Units of Measurement API for Java

+ *  Copyright 2013-2014, Jean-Marie Dautelle, Werner Keil, V2COM and individual

+ *  contributors by the @author tag.

+ *

+ *  Licensed under the Apache License, Version 2.0 (the "License");

+ *  you may not use this file except in compliance with the License.

+ *  You may obtain a copy of the License at

+ *  http://www.apache.org/licenses/LICENSE-2.0

+ *  Unless required by applicable law or agreed to in writing, software

+ *  distributed under the License is distributed on an "AS IS" BASIS,

+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *  See the License for the specific language governing permissions and

+ *  limitations under the License.

+ */

+package org.eclipse.uomo.units.impl;

+

+import java.math.BigDecimal;

+import java.math.BigInteger;

+import java.math.MathContext;

+

+import org.eclipse.uomo.units.AbstractConverter;

+import org.eclipse.uomo.units.AbstractQuantity;

+import org.eclipse.uomo.units.IMeasure;

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.unit.IncommensurableException;

+import org.unitsofmeasurement.unit.UnconvertibleException;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+/**

+ * An amount of quantity, consisting of a Number and a Unit. BaseMeasurement

+ * objects are immutable.

+ * 

+ * @see java.lang.Number

+ * @see MeasureUnit

+ * @author <a href="mailto:units@catmedia.us">Werner Keil</a>

+ * @param <Q>

+ *            The type of the quantity.

+ * @version 1.6, $Date: 2014-04-08 $

+ */

+public class BaseQuantity<Q extends Quantity<Q>> extends AbstractQuantity<Q>

+		implements Quantity<Q>, Comparable<BaseQuantity<Q>> {

+//FIXME Bug 338334 overwrite equals()

+    

+

+	/**

+	 * 

+	 */

+//	private static final long serialVersionUID = 7312161895652321241L;

+

+	private final Number value;

+	

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see AbstractMeasurement#equals(java.lang.Object)

+	 */

+	@Override

+	public boolean equals(Object obj) {

+		if (obj == null)

+			return false;

+		if (obj == this)

+			return true;

+		if (this.getClass() == obj.getClass()) {

+			return super.equals(obj);

+		} else {

+			if (obj instanceof Quantity) {

+				@SuppressWarnings("rawtypes")

+				Quantity m = (Quantity) obj;

+				if (m.value().getClass() == this.getValue().getClass()

+						&& m.unit().getClass() == this.getUnit().getClass()) {

+					return super.equals(obj);

+				} else {

+					// if (this.getQuantityUnit() instanceof AbstractUnit<?>) {

+					// if

+					// }

+					return super.equals(obj);

+				}

+			}

+			return false;

+		}

+	}

+

+	/**

+	 * Indicates if this measure is exact.

+	 */

+	private final boolean isExact;

+

+	/**

+	 * Indicates if this measure is big.

+	 */

+	private final boolean isBig;

+	

+	/**

+	 * Holds the exact value (when exact) stated in this measure unit.

+	 */

+	// private long exactValue;

+

+	/**

+	 * Holds the minimum value stated in this measure unit. For inexact

+	 * measures: minimum < maximum

+	 */

+	// private double minimum;

+

+	/**

+	 * Holds the maximum value stated in this measure unit. For inexact

+	 * measures: maximum > minimum

+	 */

+	// private double maximum;

+

+	protected BaseQuantity(Number number, Unit<Q> unit) {

+		super(unit);

+		value = number;

+		isExact = false;

+		isBig = false;;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * Measurement#doubleValue(javax.measure.Unit)

+	 */

+	public double doubleValue(Unit<Q> unit) {

+		Unit<Q> myUnit = getUnit();

+		try {

+			UnitConverter converter = unit.getConverterTo(myUnit);

+			return converter.convert(getValue().doubleValue());

+		} catch (UnconvertibleException e) {

+			throw e;

+		} // catch (IncommensurableException e) {

+		// throw new IllegalArgumentException(e.getMessage());

+		// }

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see

+	 * org.eclipse.uomo.units.AbstractMeasurement#longValue(javax.measure

+	 * .Unit)

+	 */

+	public long longValue(Unit<Q> unit) {

+		Unit<Q> myUnit = getUnit();

+		try {

+			UnitConverter converter = unit.getConverterToAny(myUnit);

+			if ((getValue() instanceof BigDecimal || getValue() instanceof BigInteger) 

+					&& converter instanceof AbstractConverter) {

+				return (((AbstractConverter)converter).convert(

+						BigDecimal.valueOf(getValue().longValue()),

+						MathContext.DECIMAL128)).longValue();

+			} else {

+		        double result = doubleValue(unit);

+		        if ((result < Long.MIN_VALUE) || (result > Long.MAX_VALUE)) {

+		            throw new ArithmeticException("Overflow (" + result + ")");

+		        }

+		        return (long) result;

+			}

+		} catch (UnconvertibleException e) {

+			throw e;

+		} catch (IncommensurableException e) {

+			throw new IllegalArgumentException(e.getMessage());

+		}

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see javax.measure.Quantity#getValue()

+	 */

+	public Number getValue() {

+		return value;

+	}

+

+	/**

+	 * Indicates if this measured amount is exact. An exact amount is guarantee

+	 * exact only when stated in this measure unit (e.g.

+	 * <code>this.longValue()</code>); stating the amount in any other unit may

+	 * introduce conversion errors.

+	 * 

+	 * @return <code>true</code> if this measure is exact; <code>false</code>

+	 *         otherwise.

+	 */

+	public boolean isExact() {

+		return isExact;

+	}

+	

+	/**

+	 * Indicates if this measured amount is a big number, i.E. BigDecimal or BigInteger.

+	 * In all other cases this would be false.

+	 * 

+	 * @return <code>true</code> if this measure is big; <code>false</code>

+	 *         otherwise.

+	 */

+	public boolean isBig() {

+		return isBig;

+	}

+	

+	@SuppressWarnings({ "rawtypes", "unchecked" })

+	public BaseQuantity<Q> add(AbstractQuantity<Q> that) {

+		final AbstractQuantity<Q> thatToUnit = that.to(getUnit());

+		return new BaseQuantity(this.getValue().doubleValue()

+				+ thatToUnit.getValue().doubleValue(), 

+                                  getUnit());

+	}

+	

+	public String toString() {

+		return  String.valueOf(getValue()) + " " 

+                        + String.valueOf(getUnit());

+	}

+

+	@Override

+	public IMeasure<Q> add(IMeasure<Q> that) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	@Override

+	public IMeasure<Q> subtract(IMeasure<Q> that) {

+		// TODO Auto-generated method stub

+		return null;

+	}

+

+	@Override

+	public IMeasure<?> multiply(IMeasure<?> that) {

+		final Unit<?> unit = getUnit().multiply(that.unit());

+		return of((getValue().doubleValue() * that.value()

+				.doubleValue()), unit);	

+	}

+        

+        @Override

+	public BaseQuantity<?> multiply(Number that) {

+		return (BaseQuantity<Q>) of((getValue().doubleValue() * that

+				.doubleValue()), getUnit());	

+	}

+        

+	@Override

+	public IMeasure<?> divide(IMeasure<?> that) {

+		final Unit<?> unit = getUnit().divide(that.unit());

+		return of((getValue().doubleValue() / that.value()

+				.doubleValue()), unit);	

+	}

+

+	public IMeasure<?> divide(Number that) {

+		// TODO may use isBig() here, too

+		if (value instanceof BigDecimal && that instanceof BigDecimal) {

+			return of(((BigDecimal)value).divide((BigDecimal)that), 

+                                getUnit());

+		}

+		return of(getValue().doubleValue() / that.doubleValue(), 

+                        getUnit());	

+	}

+	

+//	@Override

+//	public IMeasure<Q> inverse() {

+//		@SuppressWarnings({ "rawtypes", "unchecked" })

+//		final IMeasure<Q> m = new BaseQuantity(getValue(),

+//				getUnit().inverse()); // TODO keep value same?

+//		return m;

+//	}

+

+	@Override

+	public BigDecimal decimalValue(Unit<Q> unit, MathContext ctx)

+			throws ArithmeticException {

+		if (value instanceof BigDecimal) {

+                    return (BigDecimal)value;

+                }

+                if (value instanceof BigInteger) {

+                    return new BigDecimal((BigInteger)value);

+                }

+		return BigDecimal.valueOf(value.doubleValue());

+	}

+

+	@Override

+	public int compareTo(BaseQuantity<Q> o) {

+		// TODO Auto-generated method stub

+		return 0;

+	}

+

+	@Override

+	public Number value() {

+		return getValue();

+	}

+

+	@Override

+	public IMeasure<? extends IMeasure<Q>> inverse() {

+		final IMeasure<? extends IMeasure<Q>> m = new BaseQuantity(getValue(),

+		getUnit().inverse()); // TODO keep value same?

+		return m;

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/converter/LogConverter.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/converter/LogConverter.java
index 8f98e62..02d5693 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/converter/LogConverter.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/converter/LogConverter.java
@@ -1,113 +1,113 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.converter;
-
-import java.math.BigDecimal;
-import java.math.MathContext;
-
-import org.eclipse.uomo.units.AbstractConverter;
-
-/**
- * <p> This class represents a logarithmic converter of limited precision.
- *     Such converter  is typically used to create logarithmic unit.
- *     For example:[code]
- *     Unit<Dimensionless> BEL = Unit.ONE.transform(new LogConverter(10).inverse());
- *     [/code]</p>
- *
- * <p> Instances of this class are immutable.</p>
- *
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.4 ($Revision: 132 $), $Date: 2010-08-10 07:04:41 +0100 (Di, 10 Aug 2010) $
- */
-public final class LogConverter extends AbstractConverter {
-
-    /** The serialVersionUID */
-    private static final long serialVersionUID = -5581266460675123322L;
-
-    /**
-     * Holds the logarithmic base.
-     */
-    private final double base;
-    /**
-     * Holds the natural logarithm of the base.
-     */
-    private final double logOfBase;
-
-    /**
-     * Creates a logarithmic converter having the specified base.
-     *
-     * @param  base the logarithmic base (e.g. <code>Math.E</code> for
-     *         the Natural Logarithm).
-     */
-    public LogConverter(double base) {
-        this.base = base;
-        logOfBase = Math.log(base);
-    }
-
-    /**
-     * Returns the logarithmic base of this converter.
-     *
-     * @return the logarithmic base (e.g. <code>Math.E</code> for
-     *         the Natural Logarithm).
-     */
-    public double getBase() {
-        return base;
-    }
-
-    @Override
-    public AbstractConverter inverse() {
-        return new ExpConverter(base);
-    }
-
-    @Override
-    public final String toString() {
-        return "LogConverter("+ base + ")";
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (!(obj instanceof LogConverter))
-            return false;
-        LogConverter that = (LogConverter) obj;
-        return this.base == that.base;
-    }
-
-    @Override
-    public int hashCode() {
-        long bits = Double.doubleToLongBits(base);
-        return (int) (bits ^ (bits >>> 32));
-    }
-
-    @Override
-    public double convert(double amount) {
-        return Math.log(amount) / logOfBase;
-    }
-
-    @Override
-    public BigDecimal convert(BigDecimal value, MathContext ctx) throws ArithmeticException {
-        return BigDecimal.valueOf(convert(value.doubleValue())); // Reverts to double conversion.
-    }
-    
-	@Override
-	public Number convert(Number value) {
-		if (value instanceof BigDecimal) {
-			return convert((BigDecimal) value, MathContext.DECIMAL128);
-		} else {
-			return convert(value.doubleValue());
-		}
-	}
-
-    @Override
-    public boolean isLinear() {
-        return false;
-    }
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.converter;

+

+import java.math.BigDecimal;

+import java.math.MathContext;

+

+import org.eclipse.uomo.units.AbstractConverter;

+

+/**

+ * <p> This class represents a logarithmic converter of limited precision.

+ *     Such converter  is typically used to create logarithmic unit.

+ *     For example:[code]

+ *     Unit<Dimensionless> BEL = Unit.ONE.transform(new LogConverter(10).inverse());

+ *     [/code]</p>

+ *

+ * <p> Instances of this class are immutable.</p>

+ *

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.4 ($Revision: 132 $), $Date: 2010-08-10 07:04:41 +0100 (Di, 10 Aug 2010) $

+ */

+public final class LogConverter extends AbstractConverter {

+

+    /** The serialVersionUID */

+    private static final long serialVersionUID = -5581266460675123322L;

+

+    /**

+     * Holds the logarithmic base.

+     */

+    private final double base;

+    /**

+     * Holds the natural logarithm of the base.

+     */

+    private final double logOfBase;

+

+    /**

+     * Creates a logarithmic converter having the specified base.

+     *

+     * @param  base the logarithmic base (e.g. <code>Math.E</code> for

+     *         the Natural Logarithm).

+     */

+    public LogConverter(double base) {

+        this.base = base;

+        logOfBase = Math.log(base);

+    }

+

+    /**

+     * Returns the logarithmic base of this converter.

+     *

+     * @return the logarithmic base (e.g. <code>Math.E</code> for

+     *         the Natural Logarithm).

+     */

+    public double getBase() {

+        return base;

+    }

+

+    @Override

+    public AbstractConverter inverse() {

+        return new ExpConverter(base);

+    }

+

+    @Override

+    public final String toString() {

+        return "LogConverter("+ base + ")";

+    }

+

+    @Override

+    public boolean equals(Object obj) {

+        if (!(obj instanceof LogConverter))

+            return false;

+        LogConverter that = (LogConverter) obj;

+        return this.base == that.base;

+    }

+

+    @Override

+    public int hashCode() {

+        long bits = Double.doubleToLongBits(base);

+        return (int) (bits ^ (bits >>> 32));

+    }

+

+    @Override

+    public double convert(double amount) {

+        return Math.log(amount) / logOfBase;

+    }

+

+    @Override

+    public BigDecimal convert(BigDecimal value, MathContext ctx) throws ArithmeticException {

+        return BigDecimal.valueOf(convert(value.doubleValue())); // Reverts to double conversion.

+    }

+    

+	@Override

+	public Number convert(Number value) {

+		if (value instanceof BigDecimal) {

+			return convert((BigDecimal) value, MathContext.DECIMAL128);

+		} else {

+			return convert(value.doubleValue());

+		}

+	}

+

+    @Override

+    public boolean isLinear() {

+        return false;

+    }

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/SymbolMapImpl.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/SymbolMapImpl.java
index 740a1bb..8f3cf01 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/SymbolMapImpl.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/SymbolMapImpl.java
@@ -1,216 +1,216 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, JScience and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Eric Russell - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.format;
-
-import java.lang.reflect.Field;
-import java.math.BigInteger;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-import org.eclipse.uomo.units.AbstractUnit;
-import org.eclipse.uomo.units.SymbolMap;
-import org.eclipse.uomo.units.impl.converter.MultiplyConverter;
-import org.eclipse.uomo.units.impl.converter.RationalConverter;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-
-/**
- * <p> This class holds the default implementation of the SymbolMap
- *     interface.</p>
- *
- * <p> No attempt is made to verify the uniqueness of the mappings.</p>
- *
- * <p> Mappings are read from a <code>ResourceBundle</code>, the keys
- *     of which should consist of a fully-qualified class name, followed
- *     by a dot ('.'), and then the name of a static field belonging
- *     to that class, followed optionally by another dot and a number.
- *     If the trailing dot and number are not present, the value
- *     associated with the key is treated as a
- *     {@linkplain SymbolMap#label(org.unitsofmeasure.Unit, String) label},
- *     otherwise if the trailing dot and number are present, the value
- *     is treated as an {@linkplain SymbolMap#alias(org.unitsofmeasure.Unit,String) alias}.
- *     Aliases map from String to Unit only, whereas labels map in both
- *     directions. A given unit may have any number of aliases, but may
- *     have only one label.</p>
- *
- * @author <a href="mailto:eric-r@northwestern.edu">Eric Russell</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.8 ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $
- */
-class SymbolMapImpl implements SymbolMap {
-	// TODO fix issue with duplicate symbols (i.E. in different systems)
-    private final Map<String, Unit<?>> symbolToUnit;
-    private final Map<Unit<?>, String> unitToSymbol;
-    private final Map<String, ParsePrefix> symbolToPrefix;
-    private final Map<ParsePrefix, String> prefixToSymbol;
-    private final Map<UnitConverter, ParsePrefix> converterToPrefix;
-
-    /**
-     * Creates an empty mapping.
-     */
-    public SymbolMapImpl () {
-        symbolToUnit = new HashMap<String, Unit<?>>();
-        unitToSymbol = new HashMap<Unit<?>, String>();
-        symbolToPrefix = new HashMap<String, ParsePrefix>();
-        prefixToSymbol = new HashMap<ParsePrefix, String>();
-        converterToPrefix = new HashMap<UnitConverter, ParsePrefix>();
-    }
-
-    /**
-     * Creates a symbol map from the specified resource bundle,
-     *
-     * @param rb the resource bundle.
-     */
-    public SymbolMapImpl (ResourceBundle rb) {
-        this();
-        for (Enumeration<String> i = rb.getKeys(); i.hasMoreElements();) {
-            String fqn = i.nextElement();
-            String symbol = rb.getString(fqn);
-            boolean isAlias = false;
-            int lastDot = fqn.lastIndexOf('.');
-            String className = fqn.substring(0, lastDot);
-            String fieldName = fqn.substring(lastDot+1, fqn.length());
-            if (Character.isDigit(fieldName.charAt(0))) {
-                isAlias = true;
-                fqn = className;
-                lastDot = fqn.lastIndexOf('.');
-                className = fqn.substring(0, lastDot);
-                fieldName = fqn.substring(lastDot+1, fqn.length());
-            }
-            try {
-                Class<?> c = Class.forName(className);
-                Field field = c.getField(fieldName);
-                Object value = field.get(null);
-                if (value instanceof AbstractUnit<?>) {
-                    if (isAlias) {
-                        alias((AbstractUnit<?>)value, symbol);
-                    } else {
-                        label((AbstractUnit<?>)value, symbol);
-                    }
-                } else if (value instanceof ParsePrefix) {
-                    label((ParsePrefix)value, symbol);
-                } else {
-                    throw new ClassCastException("" + value + " to Unit or Prefix");  //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-1$
-                }
-            } catch (Exception e) {
-                System.err.println("Error reading Unit names: " + e.toString()); //$NON-NLS-1$
-            }
-        }
-    }
-
-//    public void label (Unit<?> unit, String symbol) {
-//        symbolToUnit.put(symbol, unit);
-//        unitToSymbol.put(unit, symbol);
-//    }
-//
-//    public void alias (Unit<?> unit, String symbol) {
-//        symbolToUnit.put(symbol, unit);
-//    }
-
-
-    public Unit<?> getUnit (String symbol) {
-        return symbolToUnit.get(symbol);
-    }
-
-//    public String getSymbol (Unit<?> unit) {
-//        return unitToSymbol.get(unit);
-//    }
-
-   public UnitConverter getConverter(String prefix) {
-        ParsePrefix prefixObject = symbolToPrefix.get(prefix);
-        if (prefixObject == null) return null;
-        return prefixObject.getConverter();
-    }
-
-    /**
-     * Attaches a label to the specified prefix. For example:[code]
-     *    symbolMap.label(Prefix.GIGA, "G");
-     *    symbolMap.label(Prefix.MICRO, "µ");
-     * [/code]
-     */
-    void label(ParsePrefix prefix, String symbol) {
-        symbolToPrefix.put(symbol, prefix);
-        prefixToSymbol.put(prefix, symbol);
-        converterToPrefix.put(prefix.getConverter(), prefix);
-        // adding MultiplyConverters (ensuring KILO(METRE) = METRE.multiply(1000)
-        if (prefix.getConverter() instanceof RationalConverter) {
-        	RationalConverter rc = (RationalConverter)prefix.getConverter();
-        	if (rc.getDividend() != null && BigInteger.ONE.equals(rc.getDivisor())) {
-        		converterToPrefix.put(new MultiplyConverter(rc.getDividend().doubleValue()), prefix);
-        	} else if (rc.getDivisor() != null && BigInteger.ONE.equals(rc.getDividend())) {
-        		converterToPrefix.put(new MultiplyConverter(1d / rc.getDivisor().doubleValue()), prefix);
-        	}
-        }
-    }
-
-    /**
-     * Returns the prefix (if any) for the specified symbol.
-     *
-     * @param symbol the unit symbol.
-     * @return the corresponding prefix or <code>null</code> if none.
-     */
-    ParsePrefix getPrefix (String symbol) {
-        for (Iterator<String> i = symbolToPrefix.keySet().iterator(); i.hasNext(); ) {
-            String pfSymbol = i.next();
-            if (symbol.startsWith(pfSymbol)) {
-                return symbolToPrefix.get(pfSymbol);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Returns the prefix for the specified converter.
-     *
-     * @param converter the unit converter.
-     * @return the corresponding prefix or <code>null</code> if none.
-     */
-    ParsePrefix getPrefixObject (UnitConverter converter) {
-        return converterToPrefix.get(converter);
-    }
-
-    /**
-     * Returns the symbol for the specified prefix.
-     *
-     * @param prefix the prefix.
-     * @return the corresponding symbol or <code>null</code> if none.
-     */
-    String getSymbol (ParsePrefix prefix) {
-        return prefixToSymbol.get(prefix);
-    }
-
-	public void alias(Unit<?> unit, String symbol) {
-		symbolToUnit.put(symbol, unit);
-	}
-
-	public String getPrefix(UnitConverter converter) {
-        ParsePrefix prefix = getPrefixObject(converter);
-        if (prefix == null) return null;
-        return prefixToSymbol.get(prefix);
-	}
-
-	public String getSymbol(Unit<?> unit) {
-		return unitToSymbol.get(unit);
-	}
-
-	public void label(Unit<?> unit, String symbol) {
-        symbolToUnit.put(symbol, unit);
-        unitToSymbol.put(unit, symbol);
-	}
-
-	public void prefix(UnitConverter cvtr, String prefix) {
-		throw new UnsupportedOperationException("Prefixes are not modifiable"); //$NON-NLS-1$
-	}
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, JScience and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Eric Russell - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.format;

+

+import java.lang.reflect.Field;

+import java.math.BigInteger;

+import java.util.Enumeration;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.ResourceBundle;

+

+import org.eclipse.uomo.units.AbstractUnit;

+import org.eclipse.uomo.units.SymbolMap;

+import org.eclipse.uomo.units.impl.converter.MultiplyConverter;

+import org.eclipse.uomo.units.impl.converter.RationalConverter;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+

+/**

+ * <p> This class holds the default implementation of the SymbolMap

+ *     interface.</p>

+ *

+ * <p> No attempt is made to verify the uniqueness of the mappings.</p>

+ *

+ * <p> Mappings are read from a <code>ResourceBundle</code>, the keys

+ *     of which should consist of a fully-qualified class name, followed

+ *     by a dot ('.'), and then the name of a static field belonging

+ *     to that class, followed optionally by another dot and a number.

+ *     If the trailing dot and number are not present, the value

+ *     associated with the key is treated as a

+ *     {@linkplain SymbolMap#label(org.unitsofmeasure.Unit, String) label},

+ *     otherwise if the trailing dot and number are present, the value

+ *     is treated as an {@linkplain SymbolMap#alias(org.unitsofmeasure.Unit,String) alias}.

+ *     Aliases map from String to Unit only, whereas labels map in both

+ *     directions. A given unit may have any number of aliases, but may

+ *     have only one label.</p>

+ *

+ * @author <a href="mailto:eric-r@northwestern.edu">Eric Russell</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.8 ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $

+ */

+class SymbolMapImpl implements SymbolMap {

+	// TODO fix issue with duplicate symbols (i.E. in different systems)

+    private final Map<String, Unit<?>> symbolToUnit;

+    private final Map<Unit<?>, String> unitToSymbol;

+    private final Map<String, ParsePrefix> symbolToPrefix;

+    private final Map<ParsePrefix, String> prefixToSymbol;

+    private final Map<UnitConverter, ParsePrefix> converterToPrefix;

+

+    /**

+     * Creates an empty mapping.

+     */

+    public SymbolMapImpl () {

+        symbolToUnit = new HashMap<String, Unit<?>>();

+        unitToSymbol = new HashMap<Unit<?>, String>();

+        symbolToPrefix = new HashMap<String, ParsePrefix>();

+        prefixToSymbol = new HashMap<ParsePrefix, String>();

+        converterToPrefix = new HashMap<UnitConverter, ParsePrefix>();

+    }

+

+    /**

+     * Creates a symbol map from the specified resource bundle,

+     *

+     * @param rb the resource bundle.

+     */

+    public SymbolMapImpl (ResourceBundle rb) {

+        this();

+        for (Enumeration<String> i = rb.getKeys(); i.hasMoreElements();) {

+            String fqn = i.nextElement();

+            String symbol = rb.getString(fqn);

+            boolean isAlias = false;

+            int lastDot = fqn.lastIndexOf('.');

+            String className = fqn.substring(0, lastDot);

+            String fieldName = fqn.substring(lastDot+1, fqn.length());

+            if (Character.isDigit(fieldName.charAt(0))) {

+                isAlias = true;

+                fqn = className;

+                lastDot = fqn.lastIndexOf('.');

+                className = fqn.substring(0, lastDot);

+                fieldName = fqn.substring(lastDot+1, fqn.length());

+            }

+            try {

+                Class<?> c = Class.forName(className);

+                Field field = c.getField(fieldName);

+                Object value = field.get(null);

+                if (value instanceof AbstractUnit<?>) {

+                    if (isAlias) {

+                        alias((AbstractUnit<?>)value, symbol);

+                    } else {

+                        label((AbstractUnit<?>)value, symbol);

+                    }

+                } else if (value instanceof ParsePrefix) {

+                    label((ParsePrefix)value, symbol);

+                } else {

+                    throw new ClassCastException("" + value + " to Unit or Prefix");  //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-1$

+                }

+            } catch (Exception e) {

+                System.err.println("Error reading Unit names: " + e.toString()); //$NON-NLS-1$

+            }

+        }

+    }

+

+//    public void label (Unit<?> unit, String symbol) {

+//        symbolToUnit.put(symbol, unit);

+//        unitToSymbol.put(unit, symbol);

+//    }

+//

+//    public void alias (Unit<?> unit, String symbol) {

+//        symbolToUnit.put(symbol, unit);

+//    }

+

+

+    public Unit<?> getUnit (String symbol) {

+        return symbolToUnit.get(symbol);

+    }

+

+//    public String getSymbol (Unit<?> unit) {

+//        return unitToSymbol.get(unit);

+//    }

+

+   public UnitConverter getConverter(String prefix) {

+        ParsePrefix prefixObject = symbolToPrefix.get(prefix);

+        if (prefixObject == null) return null;

+        return prefixObject.getConverter();

+    }

+

+    /**

+     * Attaches a label to the specified prefix. For example:[code]

+     *    symbolMap.label(Prefix.GIGA, "G");

+     *    symbolMap.label(Prefix.MICRO, "µ");

+     * [/code]

+     */

+    void label(ParsePrefix prefix, String symbol) {

+        symbolToPrefix.put(symbol, prefix);

+        prefixToSymbol.put(prefix, symbol);

+        converterToPrefix.put(prefix.getConverter(), prefix);

+        // adding MultiplyConverters (ensuring KILO(METRE) = METRE.multiply(1000)

+        if (prefix.getConverter() instanceof RationalConverter) {

+        	RationalConverter rc = (RationalConverter)prefix.getConverter();

+        	if (rc.getDividend() != null && BigInteger.ONE.equals(rc.getDivisor())) {

+        		converterToPrefix.put(new MultiplyConverter(rc.getDividend().doubleValue()), prefix);

+        	} else if (rc.getDivisor() != null && BigInteger.ONE.equals(rc.getDividend())) {

+        		converterToPrefix.put(new MultiplyConverter(1d / rc.getDivisor().doubleValue()), prefix);

+        	}

+        }

+    }

+

+    /**

+     * Returns the prefix (if any) for the specified symbol.

+     *

+     * @param symbol the unit symbol.

+     * @return the corresponding prefix or <code>null</code> if none.

+     */

+    ParsePrefix getPrefix (String symbol) {

+        for (Iterator<String> i = symbolToPrefix.keySet().iterator(); i.hasNext(); ) {

+            String pfSymbol = i.next();

+            if (symbol.startsWith(pfSymbol)) {

+                return symbolToPrefix.get(pfSymbol);

+            }

+        }

+        return null;

+    }

+

+    /**

+     * Returns the prefix for the specified converter.

+     *

+     * @param converter the unit converter.

+     * @return the corresponding prefix or <code>null</code> if none.

+     */

+    ParsePrefix getPrefixObject (UnitConverter converter) {

+        return converterToPrefix.get(converter);

+    }

+

+    /**

+     * Returns the symbol for the specified prefix.

+     *

+     * @param prefix the prefix.

+     * @return the corresponding symbol or <code>null</code> if none.

+     */

+    String getSymbol (ParsePrefix prefix) {

+        return prefixToSymbol.get(prefix);

+    }

+

+	public void alias(Unit<?> unit, String symbol) {

+		symbolToUnit.put(symbol, unit);

+	}

+

+	public String getPrefix(UnitConverter converter) {

+        ParsePrefix prefix = getPrefixObject(converter);

+        if (prefix == null) return null;

+        return prefixToSymbol.get(prefix);

+	}

+

+	public String getSymbol(Unit<?> unit) {

+		return unitToSymbol.get(unit);

+	}

+

+	public void label(Unit<?> unit, String symbol) {

+        symbolToUnit.put(symbol, unit);

+        unitToSymbol.put(unit, symbol);

+	}

+

+	public void prefix(UnitConverter cvtr, String prefix) {

+		throw new UnsupportedOperationException("Prefixes are not modifiable"); //$NON-NLS-1$

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/TokenMgrError.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/TokenMgrError.java
index d48cbb2..8ec9b7f 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/TokenMgrError.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/TokenMgrError.java
@@ -1,158 +1,158 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */
-/* JavaCCOptions: */
-package org.eclipse.uomo.units.impl.format;
-
-/** Token Manager Error. */
-class TokenMgrError extends Error
-{
-
-  /**
-   * The version identifier for this Serializable class.
-   * Increment only if the <i>serialized</i> form of the
-   * class changes.
-   */
-    private static final long serialVersionUID = -3348968864772188432L;
-
-  /*
-   * Ordinals for various reasons why an Error of this type can be thrown.
-   */
-
-
-  /**
-   * Lexical error occurred.
-   */
-  static final int LEXICAL_ERROR = 0;
-
-  /**
-   * An attempt was made to create a second instance of a static token manager.
-   */
-  static final int STATIC_LEXER_ERROR = 1;
-
-  /**
-   * Tried to change to an invalid lexical state.
-   */
-  static final int INVALID_LEXICAL_STATE = 2;
-
-  /**
-   * Detected (and bailed out of) an infinite loop in the token manager.
-   */
-  static final int LOOP_DETECTED = 3;
-
-  /**
-   * Indicates the reason why the exception is thrown. It will have
-   * one of the above 4 values.
-   */
-  int errorCode;
-
-  /**
-   * Replaces unprintable characters by their escaped (or unicode escaped)
-   * equivalents in the given string
-   */
-  static final String addEscapes(String str) {
-    StringBuffer retval = new StringBuffer();
-    char ch;
-    for (int i = 0; i < str.length(); i++) {
-      switch (str.charAt(i))
-      {
-        case 0 :
-          continue;
-        case '\b':
-          retval.append("\\b");
-          continue;
-        case '\t':
-          retval.append("\\t");
-          continue;
-        case '\n':
-          retval.append("\\n");
-          continue;
-        case '\f':
-          retval.append("\\f");
-          continue;
-        case '\r':
-          retval.append("\\r");
-          continue;
-        case '\"':
-          retval.append("\\\"");
-          continue;
-        case '\'':
-          retval.append("\\\'");
-          continue;
-        case '\\':
-          retval.append("\\\\");
-          continue;
-        default:
-          if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-            String s = "0000" + Integer.toString(ch, 16);
-            retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-          } else {
-            retval.append(ch);
-          }
-          continue;
-      }
-    }
-    return retval.toString();
-  }
-
-  /**
-   * Returns a detailed message for the Error when it is thrown by the
-   * token manager to indicate a lexical error.
-   * Parameters :
-   *    EOFSeen     : indicates if EOF caused the lexical error
-   *    curLexState : lexical state in which this error occurred
-   *    errorLine   : line number when the error occurred
-   *    errorColumn : column number when the error occurred
-   *    errorAfter  : prefix that was seen before this error occurred
-   *    curchar     : the offending character
-   * Note: You can customize the lexical error message by modifying this method.
-   */
-  static String lexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-    return("Lexical error at line " +
-          errorLine + ", column " +
-          errorColumn + ".  Encountered: " +
-          (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-          "after : \"" + addEscapes(errorAfter) + "\"");
-  }
-
-  /**
-   * You can also modify the body of this method to customize your error messages.
-   * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
-   * of end-users concern, so you can return something like :
-   *
-   *     "Internal Error : Please file a bug report .... "
-   *
-   * from this method for such cases in the release version of your parser.
-   */
-  public String getMessage() {
-    return super.getMessage();
-  }
-
-  /*
-   * Constructors of various flavors follow.
-   */
-
-  /** No arg constructor. */
-  public TokenMgrError() {
-  }
-
-  /** Constructor with message and reason. */
-  public TokenMgrError(String message, int reason) {
-    super(message);
-    errorCode = reason;
-  }
-
-  /** Full Constructor. */
-  public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-    this(lexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
-  }
-}
-/* JavaCC - OriginalChecksum=8a6e5be586cca28053ad55584e013006 (do not edit this line) */
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */

+/* JavaCCOptions: */

+package org.eclipse.uomo.units.impl.format;

+

+/** Token Manager Error. */

+class TokenMgrError extends Error

+{

+

+  /**

+   * The version identifier for this Serializable class.

+   * Increment only if the <i>serialized</i> form of the

+   * class changes.

+   */

+    private static final long serialVersionUID = -3348968864772188432L;

+

+  /*

+   * Ordinals for various reasons why an Error of this type can be thrown.

+   */

+

+

+  /**

+   * Lexical error occurred.

+   */

+  static final int LEXICAL_ERROR = 0;

+

+  /**

+   * An attempt was made to create a second instance of a static token manager.

+   */

+  static final int STATIC_LEXER_ERROR = 1;

+

+  /**

+   * Tried to change to an invalid lexical state.

+   */

+  static final int INVALID_LEXICAL_STATE = 2;

+

+  /**

+   * Detected (and bailed out of) an infinite loop in the token manager.

+   */

+  static final int LOOP_DETECTED = 3;

+

+  /**

+   * Indicates the reason why the exception is thrown. It will have

+   * one of the above 4 values.

+   */

+  int errorCode;

+

+  /**

+   * Replaces unprintable characters by their escaped (or unicode escaped)

+   * equivalents in the given string

+   */

+  static final String addEscapes(String str) {

+    StringBuffer retval = new StringBuffer();

+    char ch;

+    for (int i = 0; i < str.length(); i++) {

+      switch (str.charAt(i))

+      {

+        case 0 :

+          continue;

+        case '\b':

+          retval.append("\\b");

+          continue;

+        case '\t':

+          retval.append("\\t");

+          continue;

+        case '\n':

+          retval.append("\\n");

+          continue;

+        case '\f':

+          retval.append("\\f");

+          continue;

+        case '\r':

+          retval.append("\\r");

+          continue;

+        case '\"':

+          retval.append("\\\"");

+          continue;

+        case '\'':

+          retval.append("\\\'");

+          continue;

+        case '\\':

+          retval.append("\\\\");

+          continue;

+        default:

+          if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {

+            String s = "0000" + Integer.toString(ch, 16);

+            retval.append("\\u" + s.substring(s.length() - 4, s.length()));

+          } else {

+            retval.append(ch);

+          }

+          continue;

+      }

+    }

+    return retval.toString();

+  }

+

+  /**

+   * Returns a detailed message for the Error when it is thrown by the

+   * token manager to indicate a lexical error.

+   * Parameters :

+   *    EOFSeen     : indicates if EOF caused the lexical error

+   *    curLexState : lexical state in which this error occurred

+   *    errorLine   : line number when the error occurred

+   *    errorColumn : column number when the error occurred

+   *    errorAfter  : prefix that was seen before this error occurred

+   *    curchar     : the offending character

+   * Note: You can customize the lexical error message by modifying this method.

+   */

+  static String lexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {

+    return("Lexical error at line " +

+          errorLine + ", column " +

+          errorColumn + ".  Encountered: " +

+          (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +

+          "after : \"" + addEscapes(errorAfter) + "\"");

+  }

+

+  /**

+   * You can also modify the body of this method to customize your error messages.

+   * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not

+   * of end-users concern, so you can return something like :

+   *

+   *     "Internal Error : Please file a bug report .... "

+   *

+   * from this method for such cases in the release version of your parser.

+   */

+  public String getMessage() {

+    return super.getMessage();

+  }

+

+  /*

+   * Constructors of various flavors follow.

+   */

+

+  /** No arg constructor. */

+  public TokenMgrError() {

+  }

+

+  /** Constructor with message and reason. */

+  public TokenMgrError(String message, int reason) {

+    super(message);

+    errorCode = reason;

+  }

+

+  /** Full Constructor. */

+  public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {

+    this(lexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);

+  }

+}

+/* JavaCC - OriginalChecksum=8a6e5be586cca28053ad55584e013006 (do not edit this line) */

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/UnitFormatServiceImpl.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/UnitFormatServiceImpl.java
index e3649fd..49699a1 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/UnitFormatServiceImpl.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/UnitFormatServiceImpl.java
@@ -1,42 +1,42 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, JScience and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.format;
-
-import java.util.Locale;
-
-import org.eclipse.uomo.units.AbstractFormat;
-import org.unitsofmeasurement.service.UnitFormatService;
-import org.unitsofmeasurement.unit.UnitFormat;
-
-import com.ibm.icu.util.ULocale;
-
-/**
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 0.5 ($Revision: 308 $), $Date: 2010-11-02 15:56:52 +0000 (Di, 02 Nov 2010) $
- */
-public class UnitFormatServiceImpl implements UnitFormatService {
-
-	@Override
-	public UnitFormat getUnitFormat() {
-		return AbstractFormat.getUnitFormat();
-	}
-
-	@Override
-	public UnitFormat getUnitFormat(String name) {
-		return getUnitFormat();
-	}
-
-	@Override
-	public UnitFormat getUnitFormat(Locale locale) {
-		return AbstractFormat.getUnitFormat(ULocale.forLocale(locale));
-	}
-
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, JScience and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.format;

+

+import java.util.Locale;

+

+import org.eclipse.uomo.units.AbstractFormat;

+import org.unitsofmeasurement.service.UnitFormatService;

+import org.unitsofmeasurement.unit.UnitFormat;

+

+import com.ibm.icu.util.ULocale;

+

+/**

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 0.5 ($Revision: 308 $), $Date: 2010-11-02 15:56:52 +0000 (Di, 02 Nov 2010) $

+ */

+public class UnitFormatServiceImpl implements UnitFormatService {

+

+	@Override

+	public UnitFormat getUnitFormat() {

+		return AbstractFormat.getUnitFormat();

+	}

+

+	@Override

+	public UnitFormat getUnitFormat(String name) {

+		return getUnitFormat();

+	}

+

+	@Override

+	public UnitFormat getUnitFormat(Locale locale) {

+		return AbstractFormat.getUnitFormat(ULocale.forLocale(locale));

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/UnitParserTokenManager.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/UnitParserTokenManager.java
index 5316ad3..6546138 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/UnitParserTokenManager.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/format/UnitParserTokenManager.java
@@ -1,482 +1,482 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-/* Generated By:JavaCC: Do not edit this line. UnitParserTokenManager.java */
-package org.eclipse.uomo.units.impl.format;
-
-/** Token Manager. */
-class UnitParserTokenManager implements UnitParserConstants
-{
-
-  /** Debug output. */
-  java.io.PrintStream debugStream = System.out;
-  /** Set debug output. */
-  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-//private final int jjStopStringLiteralDfa_0(int pos, long active0)
-//{
-//   switch (pos)
-//   {
-//      default :
-//         return -1;
-//   }
-//}
-//private final int jjStartNfa_0(int pos, long active0)
-//{
-//   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-//}
-private int jjStopAtPos(int pos, int kind)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   return pos + 1;
-}
-private int jjMoveStringLiteralDfa0_0()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 12);
-      case 41:
-         return jjStopAtPos(0, 13);
-      case 42:
-         return jjStopAtPos(0, 7);
-      case 43:
-         return jjStopAtPos(0, 5);
-      case 45:
-         return jjStopAtPos(0, 6);
-      case 47:
-         return jjStopAtPos(0, 9);
-      case 58:
-         return jjStopAtPos(0, 11);
-      case 94:
-         return jjStopAtPos(0, 10);
-      case 101:
-         return jjStartNfaWithStates_0(0, 19, 7);
-      case 183:
-         return jjStopAtPos(0, 8);
-      default :
-         return jjMoveNfa_0(6, 0);
-   }
-}
-private int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-static final long[] jjbitVec0 = {
-   0x0L, 0x0L, 0x20c000000000000L, 0x0L
-};
-static final long[] jjbitVec1 = {
-   0x0L, 0x3f1000000000000L, 0x0L, 0x0L
-};
-static final long[] jjbitVec2 = {
-   0xfffffffefffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-static final long[] jjbitVec4 = {
-   0x0L, 0x0L, 0xfd73ffffffffffffL, 0xffffffffffffffffL
-};
-static final long[] jjbitVec5 = {
-   0xffffffffffffffffL, 0xfc0effffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private int jjMoveNfa_0(int startState, int curPos)
-{
-   int startsAt = 0;
-   jjnewStateCnt = 15;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 6:
-                  if ((0xf80010fe00000000L & l) != 0L)
-                  {
-                     if (kind > 20)
-                        kind = 20;
-                     jjCheckNAdd(7);
-                  }
-                  else if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 14)
-                        kind = 14;
-                     jjCheckNAddStates(0, 4);
-                  }
-                  else if (curChar == 46)
-                     jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if (curChar == 46)
-                     jjCheckNAdd(2);
-                  break;
-               case 2:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 16)
-                     kind = 16;
-                  jjCheckNAddTwoStates(2, 3);
-                  break;
-               case 4:
-                  if ((0x280000000000L & l) != 0L)
-                     jjCheckNAdd(5);
-                  break;
-               case 5:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 16)
-                     kind = 16;
-                  jjCheckNAdd(5);
-                  break;
-               case 7:
-                  if ((0xfbff10fe00000000L & l) == 0L)
-                     break;
-                  if (kind > 20)
-                     kind = 20;
-                  jjCheckNAdd(7);
-                  break;
-               case 8:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 14)
-                     kind = 14;
-                  jjCheckNAddStates(0, 4);
-                  break;
-               case 9:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 14)
-                     kind = 14;
-                  jjCheckNAdd(9);
-                  break;
-               case 10:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 16)
-                     kind = 16;
-                  jjCheckNAddStates(5, 8);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 6:
-                  if ((0xffffffffbfffffffL & l) != 0L)
-                  {
-                     if (kind > 20)
-                        kind = 20;
-                     jjCheckNAdd(7);
-                  }
-                  if (curChar == 108)
-                     jjAddStates(9, 10);
-                  break;
-               case 3:
-                  if ((0x2000000020L & l) != 0L)
-                     jjAddStates(11, 12);
-                  break;
-               case 7:
-                  if ((0xffffffffbfffffffL & l) == 0L)
-                     break;
-                  if (kind > 20)
-                     kind = 20;
-                  jjCheckNAdd(7);
-                  break;
-               case 11:
-                  if (curChar == 108)
-                     jjAddStates(9, 10);
-                  break;
-               case 12:
-                  if (curChar == 111)
-                     jjstateSet[jjnewStateCnt++] = 13;
-                  break;
-               case 13:
-                  if (curChar == 103 && kind > 17)
-                     kind = 17;
-                  break;
-               case 14:
-                  if (curChar == 110 && kind > 18)
-                     kind = 18;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int hiByte = (int)(curChar >> 8);
-         int i1 = hiByte >> 6;
-         long l1 = 1L << (hiByte & 077);
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 6:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                  {
-                     if (kind > 15)
-                        kind = 15;
-                     jjCheckNAdd(0);
-                  }
-                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                  {
-                     if (kind > 20)
-                        kind = 20;
-                     jjCheckNAdd(7);
-                  }
-                  break;
-               case 0:
-                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     break;
-                  if (kind > 15)
-                     kind = 15;
-                  jjCheckNAdd(0);
-                  break;
-               case 7:
-                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     break;
-                  if (kind > 20)
-                     kind = 20;
-                  jjCheckNAdd(7);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 15 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-static final int[] jjnextStates = {
-   9, 1, 2, 3, 10, 1, 2, 3, 10, 12, 14, 4, 5,
-};
-private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
-{
-   switch(hiByte)
-   {
-      case 0:
-         return ((jjbitVec0[i2] & l2) != 0L);
-      case 32:
-         return ((jjbitVec1[i2] & l2) != 0L);
-      default :
-         return false;
-   }
-}
-private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, long l2)
-{
-   switch(hiByte)
-   {
-      case 0:
-         return ((jjbitVec4[i2] & l2) != 0L);
-      case 32:
-         return ((jjbitVec5[i2] & l2) != 0L);
-      default :
-         if ((jjbitVec2[i1] & l1) != 0L)
-            return true;
-         return false;
-   }
-}
-
-/** Token literal values. */
-private static final String[] jjstrLiteralImages = {
-"", null, null, null, null, "\53", "\55", "\52", "\267", "\57", "\136", "\72",
-"\50", "\51", null, null, null, null, null, "\145", null, };
-
-/** Lexer state names. */
-//private static final String[] lexStateNames = {
-//   "DEFAULT",
-//};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[15];
-private final int[] jjstateSet = new int[30];
-protected char curChar;
-/** Constructor. */
-UnitParserTokenManager(SimpleCharStream stream){
-   if (SimpleCharStream.staticFlag)
-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-   input_stream = stream;
-}
-
-/** Constructor. */
-UnitParserTokenManager(SimpleCharStream stream, int lexState){
-   this(stream);
-   switchTo(lexState);
-}
-
-/** Reinitialise parser. */
-void reInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 15; i-- > 0;)
-      jjrounds[i] = 0x80000000;
-}
-
-/** Reinitialise parser. */
-void reInit(SimpleCharStream stream, int lexState)
-{
-   reInit(stream);
-   switchTo(lexState);
-}
-
-/** Switch to specified lex state. */
-void switchTo(int lexState)
-{
-   if (lexState >= 1 || lexState < 0)
-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-   else
-      curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
-   final Token t;
-   final String curTokenImage;
-   final int beginLine;
-   final int endLine;
-   final int beginColumn;
-   final int endColumn;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   curTokenImage = (im == null) ? input_stream.getImage() : im;
-   beginLine = input_stream.getBeginLine();
-   beginColumn = input_stream.getBeginColumn();
-   endLine = input_stream.getEndLine();
-   endColumn = input_stream.getEndColumn();
-   t = Token.newToken(jjmatchedKind, curTokenImage);
-
-   t.beginLine = beginLine;
-   t.endLine = endLine;
-   t.beginColumn = beginColumn;
-   t.endColumn = endColumn;
-
-   return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-/** Get the next Token. */
-Token getNextToken()
-{
-  Token matchedToken;
-  int curPos = 0;
-
-//  EOFLoop :
-  for (;;)
-  {
-   try
-   {
-      curChar = input_stream.beginToken();
-   }
-   catch(java.io.IOException e)
-   {
-      jjmatchedKind = 0;
-      matchedToken = jjFillToken();
-      return matchedToken;
-   }
-
-   jjmatchedKind = 0x7fffffff;
-   jjmatchedPos = 0;
-   curPos = jjMoveStringLiteralDfa0_0();
-   if (jjmatchedKind != 0x7fffffff)
-   {
-      if (jjmatchedPos + 1 < curPos)
-         input_stream.backup(curPos - jjmatchedPos - 1);
-         matchedToken = jjFillToken();
-         return matchedToken;
-   }
-   int error_line = input_stream.getEndLine();
-   int error_column = input_stream.getEndColumn();
-   String error_after = null;
-   boolean EOFSeen = false;
-   try { input_stream.readChar(); input_stream.backup(1); }
-   catch (java.io.IOException e1) {
-      EOFSeen = true;
-      error_after = curPos <= 1 ? "" : input_stream.getImage();
-      if (curChar == '\n' || curChar == '\r') {
-         error_line++;
-         error_column = 0;
-      }
-      else
-         error_column++;
-   }
-   if (!EOFSeen) {
-      input_stream.backup(1);
-      error_after = curPos <= 1 ? "" : input_stream.getImage();
-   }
-   throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
-  }
-}
-
-private void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-
-private void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+/* Generated By:JavaCC: Do not edit this line. UnitParserTokenManager.java */

+package org.eclipse.uomo.units.impl.format;

+

+/** Token Manager. */

+class UnitParserTokenManager implements UnitParserConstants

+{

+

+  /** Debug output. */

+  java.io.PrintStream debugStream = System.out;

+  /** Set debug output. */

+  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }

+//private final int jjStopStringLiteralDfa_0(int pos, long active0)

+//{

+//   switch (pos)

+//   {

+//      default :

+//         return -1;

+//   }

+//}

+//private final int jjStartNfa_0(int pos, long active0)

+//{

+//   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);

+//}

+private int jjStopAtPos(int pos, int kind)

+{

+   jjmatchedKind = kind;

+   jjmatchedPos = pos;

+   return pos + 1;

+}

+private int jjMoveStringLiteralDfa0_0()

+{

+   switch(curChar)

+   {

+      case 40:

+         return jjStopAtPos(0, 12);

+      case 41:

+         return jjStopAtPos(0, 13);

+      case 42:

+         return jjStopAtPos(0, 7);

+      case 43:

+         return jjStopAtPos(0, 5);

+      case 45:

+         return jjStopAtPos(0, 6);

+      case 47:

+         return jjStopAtPos(0, 9);

+      case 58:

+         return jjStopAtPos(0, 11);

+      case 94:

+         return jjStopAtPos(0, 10);

+      case 101:

+         return jjStartNfaWithStates_0(0, 19, 7);

+      case 183:

+         return jjStopAtPos(0, 8);

+      default :

+         return jjMoveNfa_0(6, 0);

+   }

+}

+private int jjStartNfaWithStates_0(int pos, int kind, int state)

+{

+   jjmatchedKind = kind;

+   jjmatchedPos = pos;

+   try { curChar = input_stream.readChar(); }

+   catch(java.io.IOException e) { return pos + 1; }

+   return jjMoveNfa_0(state, pos + 1);

+}

+static final long[] jjbitVec0 = {

+   0x0L, 0x0L, 0x20c000000000000L, 0x0L

+};

+static final long[] jjbitVec1 = {

+   0x0L, 0x3f1000000000000L, 0x0L, 0x0L

+};

+static final long[] jjbitVec2 = {

+   0xfffffffefffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL

+};

+static final long[] jjbitVec4 = {

+   0x0L, 0x0L, 0xfd73ffffffffffffL, 0xffffffffffffffffL

+};

+static final long[] jjbitVec5 = {

+   0xffffffffffffffffL, 0xfc0effffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL

+};

+private int jjMoveNfa_0(int startState, int curPos)

+{

+   int startsAt = 0;

+   jjnewStateCnt = 15;

+   int i = 1;

+   jjstateSet[0] = startState;

+   int kind = 0x7fffffff;

+   for (;;)

+   {

+      if (++jjround == 0x7fffffff)

+         ReInitRounds();

+      if (curChar < 64)

+      {

+         long l = 1L << curChar;

+         do

+         {

+            switch(jjstateSet[--i])

+            {

+               case 6:

+                  if ((0xf80010fe00000000L & l) != 0L)

+                  {

+                     if (kind > 20)

+                        kind = 20;

+                     jjCheckNAdd(7);

+                  }

+                  else if ((0x3ff000000000000L & l) != 0L)

+                  {

+                     if (kind > 14)

+                        kind = 14;

+                     jjCheckNAddStates(0, 4);

+                  }

+                  else if (curChar == 46)

+                     jjCheckNAdd(2);

+                  break;

+               case 1:

+                  if (curChar == 46)

+                     jjCheckNAdd(2);

+                  break;

+               case 2:

+                  if ((0x3ff000000000000L & l) == 0L)

+                     break;

+                  if (kind > 16)

+                     kind = 16;

+                  jjCheckNAddTwoStates(2, 3);

+                  break;

+               case 4:

+                  if ((0x280000000000L & l) != 0L)

+                     jjCheckNAdd(5);

+                  break;

+               case 5:

+                  if ((0x3ff000000000000L & l) == 0L)

+                     break;

+                  if (kind > 16)

+                     kind = 16;

+                  jjCheckNAdd(5);

+                  break;

+               case 7:

+                  if ((0xfbff10fe00000000L & l) == 0L)

+                     break;

+                  if (kind > 20)

+                     kind = 20;

+                  jjCheckNAdd(7);

+                  break;

+               case 8:

+                  if ((0x3ff000000000000L & l) == 0L)

+                     break;

+                  if (kind > 14)

+                     kind = 14;

+                  jjCheckNAddStates(0, 4);

+                  break;

+               case 9:

+                  if ((0x3ff000000000000L & l) == 0L)

+                     break;

+                  if (kind > 14)

+                     kind = 14;

+                  jjCheckNAdd(9);

+                  break;

+               case 10:

+                  if ((0x3ff000000000000L & l) == 0L)

+                     break;

+                  if (kind > 16)

+                     kind = 16;

+                  jjCheckNAddStates(5, 8);

+                  break;

+               default : break;

+            }

+         } while(i != startsAt);

+      }

+      else if (curChar < 128)

+      {

+         long l = 1L << (curChar & 077);

+         do

+         {

+            switch(jjstateSet[--i])

+            {

+               case 6:

+                  if ((0xffffffffbfffffffL & l) != 0L)

+                  {

+                     if (kind > 20)

+                        kind = 20;

+                     jjCheckNAdd(7);

+                  }

+                  if (curChar == 108)

+                     jjAddStates(9, 10);

+                  break;

+               case 3:

+                  if ((0x2000000020L & l) != 0L)

+                     jjAddStates(11, 12);

+                  break;

+               case 7:

+                  if ((0xffffffffbfffffffL & l) == 0L)

+                     break;

+                  if (kind > 20)

+                     kind = 20;

+                  jjCheckNAdd(7);

+                  break;

+               case 11:

+                  if (curChar == 108)

+                     jjAddStates(9, 10);

+                  break;

+               case 12:

+                  if (curChar == 111)

+                     jjstateSet[jjnewStateCnt++] = 13;

+                  break;

+               case 13:

+                  if (curChar == 103 && kind > 17)

+                     kind = 17;

+                  break;

+               case 14:

+                  if (curChar == 110 && kind > 18)

+                     kind = 18;

+                  break;

+               default : break;

+            }

+         } while(i != startsAt);

+      }

+      else

+      {

+         int hiByte = (int)(curChar >> 8);

+         int i1 = hiByte >> 6;

+         long l1 = 1L << (hiByte & 077);

+         int i2 = (curChar & 0xff) >> 6;

+         long l2 = 1L << (curChar & 077);

+         do

+         {

+            switch(jjstateSet[--i])

+            {

+               case 6:

+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))

+                  {

+                     if (kind > 15)

+                        kind = 15;

+                     jjCheckNAdd(0);

+                  }

+                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))

+                  {

+                     if (kind > 20)

+                        kind = 20;

+                     jjCheckNAdd(7);

+                  }

+                  break;

+               case 0:

+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))

+                     break;

+                  if (kind > 15)

+                     kind = 15;

+                  jjCheckNAdd(0);

+                  break;

+               case 7:

+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))

+                     break;

+                  if (kind > 20)

+                     kind = 20;

+                  jjCheckNAdd(7);

+                  break;

+               default : break;

+            }

+         } while(i != startsAt);

+      }

+      if (kind != 0x7fffffff)

+      {

+         jjmatchedKind = kind;

+         jjmatchedPos = curPos;

+         kind = 0x7fffffff;

+      }

+      ++curPos;

+      if ((i = jjnewStateCnt) == (startsAt = 15 - (jjnewStateCnt = startsAt)))

+         return curPos;

+      try { curChar = input_stream.readChar(); }

+      catch(java.io.IOException e) { return curPos; }

+   }

+}

+static final int[] jjnextStates = {

+   9, 1, 2, 3, 10, 1, 2, 3, 10, 12, 14, 4, 5,

+};

+private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)

+{

+   switch(hiByte)

+   {

+      case 0:

+         return ((jjbitVec0[i2] & l2) != 0L);

+      case 32:

+         return ((jjbitVec1[i2] & l2) != 0L);

+      default :

+         return false;

+   }

+}

+private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, long l2)

+{

+   switch(hiByte)

+   {

+      case 0:

+         return ((jjbitVec4[i2] & l2) != 0L);

+      case 32:

+         return ((jjbitVec5[i2] & l2) != 0L);

+      default :

+         if ((jjbitVec2[i1] & l1) != 0L)

+            return true;

+         return false;

+   }

+}

+

+/** Token literal values. */

+private static final String[] jjstrLiteralImages = {

+"", null, null, null, null, "\53", "\55", "\52", "\267", "\57", "\136", "\72",

+"\50", "\51", null, null, null, null, null, "\145", null, };

+

+/** Lexer state names. */

+//private static final String[] lexStateNames = {

+//   "DEFAULT",

+//};

+protected SimpleCharStream input_stream;

+private final int[] jjrounds = new int[15];

+private final int[] jjstateSet = new int[30];

+protected char curChar;

+/** Constructor. */

+UnitParserTokenManager(SimpleCharStream stream){

+   if (SimpleCharStream.staticFlag)

+      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");

+   input_stream = stream;

+}

+

+/** Constructor. */

+UnitParserTokenManager(SimpleCharStream stream, int lexState){

+   this(stream);

+   switchTo(lexState);

+}

+

+/** Reinitialise parser. */

+void reInit(SimpleCharStream stream)

+{

+   jjmatchedPos = jjnewStateCnt = 0;

+   curLexState = defaultLexState;

+   input_stream = stream;

+   ReInitRounds();

+}

+private void ReInitRounds()

+{

+   int i;

+   jjround = 0x80000001;

+   for (i = 15; i-- > 0;)

+      jjrounds[i] = 0x80000000;

+}

+

+/** Reinitialise parser. */

+void reInit(SimpleCharStream stream, int lexState)

+{

+   reInit(stream);

+   switchTo(lexState);

+}

+

+/** Switch to specified lex state. */

+void switchTo(int lexState)

+{

+   if (lexState >= 1 || lexState < 0)

+      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);

+   else

+      curLexState = lexState;

+}

+

+protected Token jjFillToken()

+{

+   final Token t;

+   final String curTokenImage;

+   final int beginLine;

+   final int endLine;

+   final int beginColumn;

+   final int endColumn;

+   String im = jjstrLiteralImages[jjmatchedKind];

+   curTokenImage = (im == null) ? input_stream.getImage() : im;

+   beginLine = input_stream.getBeginLine();

+   beginColumn = input_stream.getBeginColumn();

+   endLine = input_stream.getEndLine();

+   endColumn = input_stream.getEndColumn();

+   t = Token.newToken(jjmatchedKind, curTokenImage);

+

+   t.beginLine = beginLine;

+   t.endLine = endLine;

+   t.beginColumn = beginColumn;

+   t.endColumn = endColumn;

+

+   return t;

+}

+

+int curLexState = 0;

+int defaultLexState = 0;

+int jjnewStateCnt;

+int jjround;

+int jjmatchedPos;

+int jjmatchedKind;

+

+/** Get the next Token. */

+Token getNextToken()

+{

+  Token matchedToken;

+  int curPos = 0;

+

+//  EOFLoop :

+  for (;;)

+  {

+   try

+   {

+      curChar = input_stream.beginToken();

+   }

+   catch(java.io.IOException e)

+   {

+      jjmatchedKind = 0;

+      matchedToken = jjFillToken();

+      return matchedToken;

+   }

+

+   jjmatchedKind = 0x7fffffff;

+   jjmatchedPos = 0;

+   curPos = jjMoveStringLiteralDfa0_0();

+   if (jjmatchedKind != 0x7fffffff)

+   {

+      if (jjmatchedPos + 1 < curPos)

+         input_stream.backup(curPos - jjmatchedPos - 1);

+         matchedToken = jjFillToken();

+         return matchedToken;

+   }

+   int error_line = input_stream.getEndLine();

+   int error_column = input_stream.getEndColumn();

+   String error_after = null;

+   boolean EOFSeen = false;

+   try { input_stream.readChar(); input_stream.backup(1); }

+   catch (java.io.IOException e1) {

+      EOFSeen = true;

+      error_after = curPos <= 1 ? "" : input_stream.getImage();

+      if (curChar == '\n' || curChar == '\r') {

+         error_line++;

+         error_column = 0;

+      }

+      else

+         error_column++;

+   }

+   if (!EOFSeen) {

+      input_stream.backup(1);

+      error_after = curPos <= 1 ? "" : input_stream.getImage();

+   }

+   throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);

+  }

+}

+

+private void jjCheckNAdd(int state)

+{

+   if (jjrounds[state] != jjround)

+   {

+      jjstateSet[jjnewStateCnt++] = state;

+      jjrounds[state] = jjround;

+   }

+}

+private void jjAddStates(int start, int end)

+{

+   do {

+      jjstateSet[jjnewStateCnt++] = jjnextStates[start];

+   } while (start++ != end);

+}

+private void jjCheckNAddTwoStates(int state1, int state2)

+{

+   jjCheckNAdd(state1);

+   jjCheckNAdd(state2);

+}

+

+private void jjCheckNAddStates(int start, int end)

+{

+   do {

+      jjCheckNAdd(jjnextStates[start]);

+   } while (start++ != end);

+}

+

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricCapacitanceAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricCapacitanceAmount.java
index bc559c5..c2bac23 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricCapacitanceAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricCapacitanceAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.ElectricCapacitance;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents an electric capacitance.
- * The metric system unit for this quantity is "F" (Farad).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-04-28 $
- */
-public final class ElectricCapacitanceAmount extends BaseQuantity<ElectricCapacitance> {
-
-	public ElectricCapacitanceAmount(Number number, Unit<ElectricCapacitance> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.ElectricCapacitance;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents an electric capacitance.

+ * The metric system unit for this quantity is "F" (Farad).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-04-28 $

+ */

+public final class ElectricCapacitanceAmount extends BaseQuantity<ElectricCapacitance> {

+

+	public ElectricCapacitanceAmount(Number number, Unit<ElectricCapacitance> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricChargeAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricChargeAmount.java
index 46d47db..9def76c 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricChargeAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricChargeAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.ElectricCharge;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents an electric charge.
- * The metric system unit for this quantity is "C" (Coulomb).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-04-28 $
- */
-public final class ElectricChargeAmount extends BaseQuantity<ElectricCharge> {
-
-	public ElectricChargeAmount(Number number, Unit<ElectricCharge> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.ElectricCharge;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents an electric charge.

+ * The metric system unit for this quantity is "C" (Coulomb).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-04-28 $

+ */

+public final class ElectricChargeAmount extends BaseQuantity<ElectricCharge> {

+

+	public ElectricChargeAmount(Number number, Unit<ElectricCharge> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricConductanceAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricConductanceAmount.java
index 916f1d4..b4c4031 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricConductanceAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricConductanceAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.ElectricConductance;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents an electric conductance amount.
- * The metric system unit for this quantity "S" (Siemens).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-05-11 $
- */
-public final class ElectricConductanceAmount extends BaseQuantity<ElectricConductance> {
-
-	public ElectricConductanceAmount(Number number, Unit<ElectricConductance> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.ElectricConductance;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents an electric conductance amount.

+ * The metric system unit for this quantity "S" (Siemens).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-05-11 $

+ */

+public final class ElectricConductanceAmount extends BaseQuantity<ElectricConductance> {

+

+	public ElectricConductanceAmount(Number number, Unit<ElectricConductance> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricCurrentAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricCurrentAmount.java
index 4feef22..c280079 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricCurrentAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricCurrentAmount.java
@@ -1,31 +1,31 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.ElectricCurrent;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents the amount of electric charge flowing past
- * a specified circuit point per unit time.
- * The metric system unit for this quantity is "A" (Ampere).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-05-12 $
- */
-public final class ElectricCurrentAmount extends BaseQuantity<ElectricCurrent> {
-
-	public ElectricCurrentAmount(Number number, Unit<ElectricCurrent> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *   Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.ElectricCurrent;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents the amount of electric charge flowing past

+ * a specified circuit point per unit time.

+ * The metric system unit for this quantity is "A" (Ampere).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-05-12 $

+ */

+public final class ElectricCurrentAmount extends BaseQuantity<ElectricCurrent> {

+

+	public ElectricCurrentAmount(Number number, Unit<ElectricCurrent> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricInductanceAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricInductanceAmount.java
index fd95729..853fb53 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricInductanceAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricInductanceAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.ElectricInductance;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents an electric inductance.
- * The metric system unit for this quantity is "H" (Henry).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $
- */
-public final class ElectricInductanceAmount extends BaseQuantity<ElectricInductance> {
-
-	public ElectricInductanceAmount(Number number, Unit<ElectricInductance> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.ElectricInductance;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents an electric inductance.

+ * The metric system unit for this quantity is "H" (Henry).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $

+ */

+public final class ElectricInductanceAmount extends BaseQuantity<ElectricInductance> {

+

+	public ElectricInductanceAmount(Number number, Unit<ElectricInductance> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricPotentialAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricPotentialAmount.java
index 82c8342..bf994a7 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricPotentialAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricPotentialAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.ElectricPotential;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents an amount of electric potential or electromotive force.
- * The metric system unit for this quantity is "V" (Volt).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-05-13 $
- */
-public final class ElectricPotentialAmount extends BaseQuantity<ElectricPotential> {
-
-	public ElectricPotentialAmount(Number number, Unit<ElectricPotential> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.ElectricPotential;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents an amount of electric potential or electromotive force.

+ * The metric system unit for this quantity is "V" (Volt).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-05-13 $

+ */

+public final class ElectricPotentialAmount extends BaseQuantity<ElectricPotential> {

+

+	public ElectricPotentialAmount(Number number, Unit<ElectricPotential> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricResistanceAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricResistanceAmount.java
index 64f83e7..819740a 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricResistanceAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ElectricResistanceAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil, and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.ElectricResistance;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents an electric resistance.
- * The metric system unit for this quantity is "Ohm" (Ω).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-05-13 $
- */
-public final class ElectricResistanceAmount extends BaseQuantity<ElectricResistance> {
-
-	public ElectricResistanceAmount(Number number, Unit<ElectricResistance> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil, and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.ElectricResistance;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents an electric resistance.

+ * The metric system unit for this quantity is "Ohm" (Ω).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-05-13 $

+ */

+public final class ElectricResistanceAmount extends BaseQuantity<ElectricResistance> {

+

+	public ElectricResistanceAmount(Number number, Unit<ElectricResistance> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ForceAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ForceAmount.java
index cac9663..3d7864e 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ForceAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/ForceAmount.java
@@ -1,32 +1,32 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.Force;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents a quantity that tends to produce an acceleration of a body in the
- * direction of its application. The metric system unit for this quantity is "N"
- * (Newton).
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.3, $Date: 2013-05-21 $
- */
-public final class ForceAmount extends BaseQuantity<Force> implements Force {
-
-	public ForceAmount(Number number, Unit<Force> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.Force;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents a quantity that tends to produce an acceleration of a body in the

+ * direction of its application. The metric system unit for this quantity is "N"

+ * (Newton).

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.3, $Date: 2013-05-21 $

+ */

+public final class ForceAmount extends BaseQuantity<Force> implements Force {

+

+	public ForceAmount(Number number, Unit<Force> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/InformationAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/InformationAmount.java
index 908e059..59a8912 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/InformationAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/InformationAmount.java
@@ -1,31 +1,31 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.Information;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents a measure of data amount. The metric system unit for this quantity
- * is "bit".
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.5, $Date: 2013-05-21 $
- */
-public final class InformationAmount extends BaseQuantity<Information> implements
-		Information {
-
-	public InformationAmount(Number number, Unit<Information> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.Information;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents a measure of data amount. The metric system unit for this quantity

+ * is "bit".

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.5, $Date: 2013-05-21 $

+ */

+public final class InformationAmount extends BaseQuantity<Information> implements

+		Information {

+

+	public InformationAmount(Number number, Unit<Information> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/IonizingRadiationAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/IonizingRadiationAmount.java
index b73c9a5..ae31d3b 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/IonizingRadiationAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/IonizingRadiationAmount.java
@@ -1,31 +1,31 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.IonizingRadiation;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents the quantity of subatomic particles or electromagnetic waves that
- * are energetic enough to detach electrons from atoms or molecules, ionizing
- * them. The system unit for this quantity is "C/kg ("coulomb per kilogram).
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.1, $Date: 2013-05-21 $
- */
-public final class IonizingRadiationAmount extends BaseQuantity<IonizingRadiation>
-		implements IonizingRadiation {
-
-	public IonizingRadiationAmount(Number number, Unit<IonizingRadiation> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.IonizingRadiation;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents the quantity of subatomic particles or electromagnetic waves that

+ * are energetic enough to detach electrons from atoms or molecules, ionizing

+ * them. The system unit for this quantity is "C/kg ("coulomb per kilogram).

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.1, $Date: 2013-05-21 $

+ */

+public final class IonizingRadiationAmount extends BaseQuantity<IonizingRadiation>

+		implements IonizingRadiation {

+

+	public IonizingRadiationAmount(Number number, Unit<IonizingRadiation> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/LuminousFluxAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/LuminousFluxAmount.java
index cb7efbc..e522d30 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/LuminousFluxAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/LuminousFluxAmount.java
@@ -1,31 +1,31 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.LuminousFlux;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents a luminous flux. The metric system unit for this quantity is "lm"
- * (lumen).
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-05-21 $
- */
-public final class LuminousFluxAmount extends BaseQuantity<LuminousFlux>
-		implements LuminousFlux {
-
-	public LuminousFluxAmount(Number number, Unit<LuminousFlux> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.LuminousFlux;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents a luminous flux. The metric system unit for this quantity is "lm"

+ * (lumen).

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-05-21 $

+ */

+public final class LuminousFluxAmount extends BaseQuantity<LuminousFlux>

+		implements LuminousFlux {

+

+	public LuminousFluxAmount(Number number, Unit<LuminousFlux> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/LuminousIntensityAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/LuminousIntensityAmount.java
index 18b3bfd..b5b114a 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/LuminousIntensityAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/LuminousIntensityAmount.java
@@ -1,32 +1,32 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.LuminousIntensity;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents the luminous flux density per solid angle as measured in a given
- * direction relative to the emitting source. The metric system unit for this
- * quantity is "cd" (candela).
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-05-21 $
- */
-public final class LuminousIntensityAmount extends
-		BaseQuantity<LuminousIntensity> implements LuminousIntensity {
-
-	public LuminousIntensityAmount(Number number, Unit<LuminousIntensity> unit) {
-		super(number, unit);
-	}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.LuminousIntensity;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents the luminous flux density per solid angle as measured in a given

+ * direction relative to the emitting source. The metric system unit for this

+ * quantity is "cd" (candela).

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-05-21 $

+ */

+public final class LuminousIntensityAmount extends

+		BaseQuantity<LuminousIntensity> implements LuminousIntensity {

+

+	public LuminousIntensityAmount(Number number, Unit<LuminousIntensity> unit) {

+		super(number, unit);

+	}

 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagneticFluxAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagneticFluxAmount.java
index 45433f4..0c58832 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagneticFluxAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagneticFluxAmount.java
@@ -1,31 +1,31 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.MagneticFlux;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents a magnetic flux. The metric system unit for this quantity is "Wb"
- * (Weber).
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2010-05-21 $
- */
-public class MagneticFluxAmount extends BaseQuantity<MagneticFlux> implements
-		MagneticFlux {
-
-	public MagneticFluxAmount(Number number, Unit<MagneticFlux> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.MagneticFlux;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents a magnetic flux. The metric system unit for this quantity is "Wb"

+ * (Weber).

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2010-05-21 $

+ */

+public class MagneticFluxAmount extends BaseQuantity<MagneticFlux> implements

+		MagneticFlux {

+

+	public MagneticFluxAmount(Number number, Unit<MagneticFlux> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagneticFluxDensityAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagneticFluxDensityAmount.java
index ef4352e..94019c5 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagneticFluxDensityAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagneticFluxDensityAmount.java
@@ -1,32 +1,32 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.MagneticFluxDensity;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents a magnetic flux density. The metric system unit for this quantity
- * is "T" (Tesla).
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-05-21 $
- */
-public class MagneticFluxDensityAmount extends BaseQuantity<MagneticFluxDensity>
-		implements MagneticFluxDensity {
-
-	public MagneticFluxDensityAmount(Number number,
-			Unit<MagneticFluxDensity> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.MagneticFluxDensity;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents a magnetic flux density. The metric system unit for this quantity

+ * is "T" (Tesla).

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-05-21 $

+ */

+public class MagneticFluxDensityAmount extends BaseQuantity<MagneticFluxDensity>

+		implements MagneticFluxDensity {

+

+	public MagneticFluxDensityAmount(Number number,

+			Unit<MagneticFluxDensity> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagnetomotiveForceAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagnetomotiveForceAmount.java
index e27fe73..8047781 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagnetomotiveForceAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/MagnetomotiveForceAmount.java
@@ -1,33 +1,33 @@
-/**
- * Copyright (c) 2005, 2014, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.MagnetomotiveForce;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents an amount of force that produces magnetic flux. The metric system
- * unit for this quantity is "At" (ampere-turn).
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.5, $Date: 2013-05-21 $
- * @see <a href="http://en.wikipedia.org/wiki/Magnetomotive_force">Wikipedia's
- *      Magnetomotive Force</a>
- */
-public final class MagnetomotiveForceAmount extends
-		BaseQuantity<MagnetomotiveForce> implements MagnetomotiveForce {
-
-	public MagnetomotiveForceAmount(Number number, Unit<MagnetomotiveForce> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2014, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.MagnetomotiveForce;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents an amount of force that produces magnetic flux. The metric system

+ * unit for this quantity is "At" (ampere-turn).

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.5, $Date: 2013-05-21 $

+ * @see <a href="http://en.wikipedia.org/wiki/Magnetomotive_force">Wikipedia's

+ *      Magnetomotive Force</a>

+ */

+public final class MagnetomotiveForceAmount extends

+		BaseQuantity<MagnetomotiveForce> implements MagnetomotiveForce {

+

+	public MagnetomotiveForceAmount(Number number, Unit<MagnetomotiveForce> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/PowerAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/PowerAmount.java
index 62c267c..bc4179b 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/PowerAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/PowerAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Jean-Marie Dautelle - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.Power;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents the rate at which work is done.
- * The metric system unit for this quantity is "W" (Watt).
- *
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2013-05-21 $
- */
-public final class PowerAmount extends BaseQuantity<Power> implements Power {
-
-	public PowerAmount(Number number,Unit<Power> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Jean-Marie Dautelle - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.Power;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents the rate at which work is done.

+ * The metric system unit for this quantity is "W" (Watt).

+ *

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2013-05-21 $

+ */

+public final class PowerAmount extends BaseQuantity<Power> implements Power {

+

+	public PowerAmount(Number number,Unit<Power> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadiationDoseAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadiationDoseAmount.java
index 1f39f75..47ce199 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadiationDoseAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadiationDoseAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.RadiationDoseAbsorbed;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents the amount of energy deposited per unit of mass.
- * The system unit for this quantity is "Gy" (Gray).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $
- */
-public class RadiationDoseAmount extends BaseQuantity<RadiationDoseAbsorbed> {
-
-	public RadiationDoseAmount(Number number, Unit<RadiationDoseAbsorbed> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.RadiationDoseAbsorbed;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents the amount of energy deposited per unit of mass.

+ * The system unit for this quantity is "Gy" (Gray).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $

+ */

+public class RadiationDoseAmount extends BaseQuantity<RadiationDoseAbsorbed> {

+

+	public RadiationDoseAmount(Number number, Unit<RadiationDoseAbsorbed> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadiationDoseEffectiveAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadiationDoseEffectiveAmount.java
index 890282f..24713cb 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadiationDoseEffectiveAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadiationDoseEffectiveAmount.java
@@ -1,31 +1,31 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.RadiationDoseEffective;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents the effective (or "equivalent") dose of radiation
- * received by a human or some other living organism.
- * The metric system unit for this quantity is "Sv" (Sievert).
- * 
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.3 ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $
- */
-public class RadiationDoseEffectiveAmount extends BaseQuantity<RadiationDoseEffective> {
-
-	public RadiationDoseEffectiveAmount(Number number, Unit<RadiationDoseEffective> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.RadiationDoseEffective;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents the effective (or "equivalent") dose of radiation

+ * received by a human or some other living organism.

+ * The metric system unit for this quantity is "Sv" (Sievert).

+ * 

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.3 ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $

+ */

+public class RadiationDoseEffectiveAmount extends BaseQuantity<RadiationDoseEffective> {

+

+	public RadiationDoseEffectiveAmount(Number number, Unit<RadiationDoseEffective> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadioactivityAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadioactivityAmount.java
index dc9d555..9c1579b 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadioactivityAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/RadioactivityAmount.java
@@ -1,31 +1,31 @@
-/**
- * Copyright (c) 2005, 2014, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.RadioactiveActivity;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents radioactivity. The metric system unit for this quantity is "Bq"
- * (Becquerel).
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.2, $Date: 2014-03-03 $
- */
-public class RadioactivityAmount extends BaseQuantity<RadioactiveActivity>
-		implements RadioactiveActivity {
-
-	public RadioactivityAmount(Number number, Unit<RadioactiveActivity> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2014, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.RadioactiveActivity;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents radioactivity. The metric system unit for this quantity is "Bq"

+ * (Becquerel).

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.2, $Date: 2014-03-03 $

+ */

+public class RadioactivityAmount extends BaseQuantity<RadioactiveActivity>

+		implements RadioactiveActivity {

+

+	public RadioactivityAmount(Number number, Unit<RadioactiveActivity> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/SubstanceAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/SubstanceAmount.java
index c34e743..7e2f6d7 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/SubstanceAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/SubstanceAmount.java
@@ -1,30 +1,30 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, JScience and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.unitsofmeasurement.quantity.AmountOfSubstance;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * Represents the number of elementary entities (molecules, for example) of a substance.
- * The metric system unit for this quantity is "mol" (mole).
- *
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.4 ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $
- */
-public class SubstanceAmount extends BaseQuantity<AmountOfSubstance> {
-	
-	public SubstanceAmount(Number number, Unit<AmountOfSubstance> unit) {
-		super(number, unit);
-	}
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, JScience and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.unitsofmeasurement.quantity.AmountOfSubstance;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * Represents the number of elementary entities (molecules, for example) of a substance.

+ * The metric system unit for this quantity is "mol" (mole).

+ *

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.4 ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $

+ */

+public class SubstanceAmount extends BaseQuantity<AmountOfSubstance> {

+	

+	public SubstanceAmount(Number number, Unit<AmountOfSubstance> unit) {

+		super(number, unit);

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/TimeAmount.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/TimeAmount.java
index 102cfb3..817e87a 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/TimeAmount.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/quantity/TimeAmount.java
@@ -1,186 +1,186 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.quantity;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.math.MathContext;
-
-import org.eclipse.uomo.units.AbstractConverter;
-import org.eclipse.uomo.units.AbstractUnit;
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.impl.BaseQuantity;
-import org.eclipse.uomo.units.impl.converter.RationalConverter;
-import org.unitsofmeasurement.quantity.Time;
-import org.unitsofmeasurement.unit.IncommensurableException;
-import org.unitsofmeasurement.unit.UnconvertibleException;
-import org.unitsofmeasurement.unit.Unit;
-import org.unitsofmeasurement.unit.UnitConverter;
-
-/**
- * Represents a period of existence or persistence. The metric system unit for
- * this quantity is "s" (second).
- * 
- * Due to an incompatible private constructor in ICU4J TimeUnit, this uses BaseUnit.
- * TODO add conversions with ICU4J TimeUnitAmount where necessary
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.6 ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $
- */
-public final class TimeAmount extends BaseQuantity<Time> implements Time {
-
-	public TimeAmount(Number number, Unit<Time> unit) {
-		super(number, unit);
-	}
-
-	/**
-	 * Get the unit (convenience to avoid cast).
-	 * 
-	 * @draft UOMo 0.5
-	 * @provisional This API might change or be removed in a future release.
-	 */
-	public AbstractUnit<Time> unit() {
-		return (AbstractUnit<Time>) super.unit();
-	}
-
-	/**
-	 * Returns the value of this quantity as <code>double</code> stated in the
-	 * specified unit. This method is recommended over <code>
-	 * q.getUnit().getConverterTo(unit).convert(q.getNumber()).doubleValue()</code>
-	 * 
-	 * @param unit
-	 *            the unit in which the returned value is stated.
-	 * @return the value of this quantity when stated in the specified unit.
-	 */
-	public double doubleValue(Unit<Time> unit) {
-		Unit<Time> myUnit = unit();
-		try {
-			UnitConverter converter = unit.getConverterToAny(myUnit);
-			return converter.convert(getValue().doubleValue());
-		} catch (UnconvertibleException e) {
-			throw e;
-		} catch (IncommensurableException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		}
-	}
-
-	/**
-	 * Returns the value of this quantity as <code>long</code> stated in the
-	 * specified unit. This method is recommended over <code>
-	 * q.getUnit().getConverterTo(unit).convert(q.getNumber()).longValue()</code>
-	 * 
-	 * @param unit
-	 *            the unit in which the returned value is stated.
-	 * @return the value of this quantity when stated in the specified unit.
-	 */
-	public long longValue(Unit<Time> unit) {
-		Unit<Time> myUnit = unit();
-		try {
-			UnitConverter converter = unit.getConverterToAny(myUnit);
-			return (converter.convert(
-					BigDecimal.valueOf(getValue().longValue()),
-					MathContext.DECIMAL128)).longValue();
-		} catch (UnconvertibleException e) {
-			throw e;
-		} catch (IncommensurableException e) {
-			throw new IllegalArgumentException(e.getMessage());
-		}
-	}
-
-	public TimeAmount add(IMeasure<Time> that) {
-		return new TimeAmount(super.getValue().doubleValue()
-				+ ((BaseQuantity<Time>) that).getValue().doubleValue(),
-				that.unit());
-	}
-
-	public TimeAmount subtract(IMeasure<Time> that) {
-		return new TimeAmount(super.getValue().doubleValue()
-				- ((BaseQuantity<Time>) that).getValue().doubleValue(),
-				that.unit());
-	}
-	
-//	public IMeasure<Time> divide(IMeasure<?> that) {
-//		@SuppressWarnings("unchecked")
-//		Unit<Time> unit = (Unit<Time>) unit().divide(that.unit());
-		
-		// FIXME include number division
-//		return new TimeAmount((BigDecimal) getNumber())
-//				.divide((BigDecimal) ((Measure)that).getNumber()), unit);
-//		return new TimeAmount(getNumber(), unit);
-//	}
-
-	@SuppressWarnings({ "unchecked" })
-	public TimeAmount multiply(IMeasure<?> that) {
-		Unit<Time> unit = (Unit<Time>) unit().multiply(that.unit());
-		
-		// FIXME include number division
-//		return new TimeAmount((BigDecimal) getNumber())
-//				.divide((BigDecimal) ((Measure)that).getNumber()), unit);
-		return new TimeAmount(getValue(), unit);
-	}
-
-	/**
-	 * Returns the amount corresponding to the specified value
-	 * and unit.
-	 * 
-	 * @param value
-	 *            the value stated in the specified unit.
-	 * @param unit
-	 *            the unit in which the value is stated.
-	 * @return the corresponding amount.
-	 */
-	public static TimeAmount valueOf(Number value, AbstractUnit<Time> unit) {
-		TimeAmount amount = new TimeAmount(value, unit);
-		return amount;
-	}
-	
-	public TimeAmount to(Unit<Time> unit) {
-		return to(unit, MathContext.DECIMAL32);
-	}
-	
-	public TimeAmount to(Unit<Time> unit, MathContext ctx) {
-        if (this.unit().equals(unit))
-            return this;
-        UnitConverter cvtr = this.unit().getConverterTo(unit);
-        if (cvtr == AbstractConverter.IDENTITY)
-            return (TimeAmount) of(this.getValue().intValue(), unit);
-        return (TimeAmount) of(convert(this.getValue(), cvtr, ctx).intValue(), unit);
-    }
-
-    // Try to convert the specified value.
-    private static Number convert(Number value, UnitConverter cvtr, MathContext ctx) {
-        if (cvtr instanceof RationalConverter) { // Try converting through Field methods.
-            RationalConverter rCvtr = (RationalConverter) cvtr;
-            BigInteger dividend = rCvtr.getDividend();
-            BigInteger divisor = rCvtr.getDivisor();
-            if (dividend.abs().compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)
-                throw new ArithmeticException("Multiplier overflow");
-            if (divisor.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)
-                throw new ArithmeticException("Divisor overflow");
-            return (value.longValue() * dividend.longValue()) / (divisor.longValue());
-        } else if (cvtr instanceof AbstractConverter.Compound && cvtr.isLinear()) { // Do it in two parts.
-            AbstractConverter.Compound compound = (AbstractConverter.Compound) cvtr;
-            Number firstConversion = convert(value, compound.getRight(), ctx);
-            Number secondConversion = convert(firstConversion, compound.getLeft(), ctx);
-            return secondConversion;
-        } else { // Try using BigDecimal as intermediate.
-            BigDecimal decimalValue = BigDecimal.valueOf(value.doubleValue());
-            BigDecimal newValue = cvtr.convert(decimalValue, ctx);
-            return newValue;
-//            if (((FieldNumber)value) instanceof Decimal)
-//                return (N)((FieldNumber)Decimal.valueOf(newValue));
-//            if (((FieldNumber)value) instanceof Float64)
-//                return (N)((FieldNumber)Float64.valueOf(newValue.doubleValue()));
-//            throw new ArithmeticException(
-//                    "Generic amount conversion not implemented for amount of type " + value.getClass());
-        }
-    }
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.quantity;

+

+import java.math.BigDecimal;

+import java.math.BigInteger;

+import java.math.MathContext;

+

+import org.eclipse.uomo.units.AbstractConverter;

+import org.eclipse.uomo.units.AbstractUnit;

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.impl.BaseQuantity;

+import org.eclipse.uomo.units.impl.converter.RationalConverter;

+import org.unitsofmeasurement.quantity.Time;

+import org.unitsofmeasurement.unit.IncommensurableException;

+import org.unitsofmeasurement.unit.UnconvertibleException;

+import org.unitsofmeasurement.unit.Unit;

+import org.unitsofmeasurement.unit.UnitConverter;

+

+/**

+ * Represents a period of existence or persistence. The metric system unit for

+ * this quantity is "s" (second).

+ * 

+ * Due to an incompatible private constructor in ICU4J TimeUnit, this uses BaseUnit.

+ * TODO add conversions with ICU4J TimeUnitAmount where necessary

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.6 ($Revision: 212 $), $Date: 2010-09-13 23:50:44 +0200 (Mo, 13 Sep 2010) $

+ */

+public final class TimeAmount extends BaseQuantity<Time> implements Time {

+

+	public TimeAmount(Number number, Unit<Time> unit) {

+		super(number, unit);

+	}

+

+	/**

+	 * Get the unit (convenience to avoid cast).

+	 * 

+	 * @draft UOMo 0.5

+	 * @provisional This API might change or be removed in a future release.

+	 */

+	public AbstractUnit<Time> unit() {

+		return (AbstractUnit<Time>) super.unit();

+	}

+

+	/**

+	 * Returns the value of this quantity as <code>double</code> stated in the

+	 * specified unit. This method is recommended over <code>

+	 * q.getUnit().getConverterTo(unit).convert(q.getNumber()).doubleValue()</code>

+	 * 

+	 * @param unit

+	 *            the unit in which the returned value is stated.

+	 * @return the value of this quantity when stated in the specified unit.

+	 */

+	public double doubleValue(Unit<Time> unit) {

+		Unit<Time> myUnit = unit();

+		try {

+			UnitConverter converter = unit.getConverterToAny(myUnit);

+			return converter.convert(getValue().doubleValue());

+		} catch (UnconvertibleException e) {

+			throw e;

+		} catch (IncommensurableException e) {

+			throw new IllegalArgumentException(e.getMessage());

+		}

+	}

+

+	/**

+	 * Returns the value of this quantity as <code>long</code> stated in the

+	 * specified unit. This method is recommended over <code>

+	 * q.getUnit().getConverterTo(unit).convert(q.getNumber()).longValue()</code>

+	 * 

+	 * @param unit

+	 *            the unit in which the returned value is stated.

+	 * @return the value of this quantity when stated in the specified unit.

+	 */

+	public long longValue(Unit<Time> unit) {

+		Unit<Time> myUnit = unit();

+		try {

+			UnitConverter converter = unit.getConverterToAny(myUnit);

+			return (converter.convert(

+					BigDecimal.valueOf(getValue().longValue()),

+					MathContext.DECIMAL128)).longValue();

+		} catch (UnconvertibleException e) {

+			throw e;

+		} catch (IncommensurableException e) {

+			throw new IllegalArgumentException(e.getMessage());

+		}

+	}

+

+	public TimeAmount add(IMeasure<Time> that) {

+		return new TimeAmount(super.getValue().doubleValue()

+				+ ((BaseQuantity<Time>) that).getValue().doubleValue(),

+				that.unit());

+	}

+

+	public TimeAmount subtract(IMeasure<Time> that) {

+		return new TimeAmount(super.getValue().doubleValue()

+				- ((BaseQuantity<Time>) that).getValue().doubleValue(),

+				that.unit());

+	}

+	

+//	public IMeasure<Time> divide(IMeasure<?> that) {

+//		@SuppressWarnings("unchecked")

+//		Unit<Time> unit = (Unit<Time>) unit().divide(that.unit());

+		

+		// FIXME include number division

+//		return new TimeAmount((BigDecimal) getNumber())

+//				.divide((BigDecimal) ((Measure)that).getNumber()), unit);

+//		return new TimeAmount(getNumber(), unit);

+//	}

+

+	@SuppressWarnings({ "unchecked" })

+	public TimeAmount multiply(IMeasure<?> that) {

+		Unit<Time> unit = (Unit<Time>) unit().multiply(that.unit());

+		

+		// FIXME include number division

+//		return new TimeAmount((BigDecimal) getNumber())

+//				.divide((BigDecimal) ((Measure)that).getNumber()), unit);

+		return new TimeAmount(getValue(), unit);

+	}

+

+	/**

+	 * Returns the amount corresponding to the specified value

+	 * and unit.

+	 * 

+	 * @param value

+	 *            the value stated in the specified unit.

+	 * @param unit

+	 *            the unit in which the value is stated.

+	 * @return the corresponding amount.

+	 */

+	public static TimeAmount valueOf(Number value, AbstractUnit<Time> unit) {

+		TimeAmount amount = new TimeAmount(value, unit);

+		return amount;

+	}

+	

+	public TimeAmount to(Unit<Time> unit) {

+		return to(unit, MathContext.DECIMAL32);

+	}

+	

+	public TimeAmount to(Unit<Time> unit, MathContext ctx) {

+        if (this.unit().equals(unit))

+            return this;

+        UnitConverter cvtr = this.unit().getConverterTo(unit);

+        if (cvtr == AbstractConverter.IDENTITY)

+            return (TimeAmount) of(this.getValue().intValue(), unit);

+        return (TimeAmount) of(convert(this.getValue(), cvtr, ctx).intValue(), unit);

+    }

+

+    // Try to convert the specified value.

+    private static Number convert(Number value, UnitConverter cvtr, MathContext ctx) {

+        if (cvtr instanceof RationalConverter) { // Try converting through Field methods.

+            RationalConverter rCvtr = (RationalConverter) cvtr;

+            BigInteger dividend = rCvtr.getDividend();

+            BigInteger divisor = rCvtr.getDivisor();

+            if (dividend.abs().compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)

+                throw new ArithmeticException("Multiplier overflow");

+            if (divisor.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0)

+                throw new ArithmeticException("Divisor overflow");

+            return (value.longValue() * dividend.longValue()) / (divisor.longValue());

+        } else if (cvtr instanceof AbstractConverter.Compound && cvtr.isLinear()) { // Do it in two parts.

+            AbstractConverter.Compound compound = (AbstractConverter.Compound) cvtr;

+            Number firstConversion = convert(value, compound.getRight(), ctx);

+            Number secondConversion = convert(firstConversion, compound.getLeft(), ctx);

+            return secondConversion;

+        } else { // Try using BigDecimal as intermediate.

+            BigDecimal decimalValue = BigDecimal.valueOf(value.doubleValue());

+            BigDecimal newValue = cvtr.convert(decimalValue, ctx);

+            return newValue;

+//            if (((FieldNumber)value) instanceof Decimal)

+//                return (N)((FieldNumber)Decimal.valueOf(newValue));

+//            if (((FieldNumber)value) instanceof Float64)

+//                return (N)((FieldNumber)Float64.valueOf(newValue.doubleValue()));

+//            throw new ArithmeticException(

+//                    "Generic amount conversion not implemented for amount of type " + value.getClass());

+        }

+    }

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/system/Imperial.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/system/Imperial.java
index af6db53..0d41545 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/system/Imperial.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/system/Imperial.java
@@ -1,254 +1,254 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.system;
-
-
-import static org.eclipse.uomo.units.SI.*;
-import static org.eclipse.uomo.units.SI.Prefix.MICRO;
-import static org.eclipse.uomo.units.internal.NonSI.AVOIRDUPOIS_POUND_DIVIDEND;
-import static org.eclipse.uomo.units.internal.NonSI.AVOIRDUPOIS_POUND_DIVISOR;
-
-import org.eclipse.uomo.units.AbstractSystemOfUnits;
-import org.unitsofmeasurement.quantity.Area;
-import org.unitsofmeasurement.quantity.Length;
-import org.unitsofmeasurement.quantity.Mass;
-import org.unitsofmeasurement.quantity.Temperature;
-import org.unitsofmeasurement.quantity.Time;
-import org.unitsofmeasurement.quantity.Volume;
-import org.unitsofmeasurement.unit.SystemOfUnits;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * <p>
- * This class contains units from the Imperial system.
- * </p>
- * <p>
- * 
- * @noextend This class is not intended to be extended by clients.
- * 
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.1 ($Revision: 332 $), $Date: 2011-09-11 14:52:11 +0200 $
- * @see <a
- *      href="http://en.wikipedia.org/wiki/http://en.wikipedia.org/wiki/Imperial_unit">Wikipedia:
- *      Imperial Units</a>
- */
-public final class Imperial extends AbstractSystemOfUnits  {
-
-	/**
-	 * Default constructor (prevents this class from being instantiated).
-	 */
-	private Imperial() {
-	}
-
-	/**
-	 * Returns the unique instance of this class.
-	 * 
-	 * @return the Imperial instance.
-	 */
-	public static SystemOfUnits getInstance() {
-		return INSTANCE;
-	}
-
-	private static final Imperial INSTANCE = new Imperial();
-
-	// //////////
-	// Length //
-	// //////////
-
-	/**
-	 * A unit of length equal to <code>0.0254 m</code> (standard name
-	 * <code>in</code>).
-	 */
-	public static final Unit<Length> INCH = USCustomary.INCH;
-	
-	// ////////
-	// Mass //
-	// ////////
-
-	/**
-	 * A unit of mass equal to <code>453.59237 grams</code> (avoirdupois pound,
-	 * standard name <code>lb</code>).
-	 */
-	static final Unit<Mass> POUND = addUnit(KILOGRAM.multiply(
-			AVOIRDUPOIS_POUND_DIVIDEND).divide(AVOIRDUPOIS_POUND_DIVISOR));
-
-	/**
-	 * A unit of mass equal to <code>1 / 16 {@link #POUND}</code> (standard name
-	 * <code>oz</code>).
-	 */
-	public static final Unit<Mass> OUNCE = addUnit(POUND.divide(16));
-	
-	/**
-	 * A unit of mass equal to <code>2240 {@link #POUND}</code> (long ton,
-	 * standard name <code>ton_uk</code>).
-	 */
-	public static final Unit<Mass> TON_UK = addUnit(POUND.multiply(2240));
-
-	/**
-	 * A unit of mass equal to <code>1000 kg</code> (metric ton, standard name
-	 * <code>t</code>).
-	 */
-	public static final Unit<Mass> METRIC_TON = addUnit(KILOGRAM.multiply(1000));
-
-	// ///////////////
-	// Temperature //
-	// ///////////////
-
-	/**
-	 * A unit of temperature equal to <code>5/9 °K</code> (standard name
-	 * <code>°R</code>).
-	 */
-	static final Unit<Temperature> RANKINE = addUnit(KELVIN.multiply(5)
-			.divide(9));
-
-	/**
-	 * A unit of temperature equal to degree Rankine minus
-	 * <code>459.67 °R</code> (standard name <code>°F</code>).
-	 * 
-	 * @see #RANKINE
-	 */
-	static final Unit<Temperature> FAHRENHEIT = addUnit(RANKINE
-			.add(459.67));
-
-	// /////////
-	// Angle //
-	// /////////
-
-	
-	// ////////////
-	// TimeUnit //
-	// ////////////
-	/**
-	 * A unit of time equal to <code>60 s</code> (standard name <code>min</code>
-	 * ).
-	 */
-	static final Unit<Time> MINUTE = addUnit(SECOND.multiply(60));
-
-	/**
-	 * A unit of duration equal to <code>60 {@link #MINUTE}</code> (standard
-	 * name <code>h</code>).
-	 */
-	static final Unit<Time> HOUR = addUnit(MINUTE.multiply(60));
-
-	// ////////////
-	// Velocity //
-	// ////////////
-
-
-	// ////////
-	// Area //
-	// ////////
-
-	/**
-	 * A unit of area (standard name <code>sft</code>
-	 * ).
-	 */
-	public static final Unit<Area> SQUARE_FOOT = USCustomary.SQUARE_FOOT;
-	
-	/**
-	 * One acre is 43,560 <code>square feet</code> (standard name <code>a</code>
-	 * ).
-	 */
-	public static final Unit<Area> ACRE = addUnit(SQUARE_FOOT.multiply(43560));
-
-	// ///////////////
-	// Data Amount //
-	// ///////////////
-	
-
-	// //////////
-	// Energy //
-	// //////////
-
-
-	// //////////
-	// Volume //
-	// //////////
-	/**
-	 * A unit of volume equal to one cubic decimeter (default label
-	 * <code>L</code>, also recognized <code>µL, mL, cL, dL</code>).
-	 */
-	static final Unit<Volume> LITRE = addUnit(CUBIC_METRE.divide(1000));
-
-	/**
-	 * A unit of volume equal to one cubic inch (<code>in³</code>).
-	 */
-	static final Unit<Volume> CUBIC_INCH = addUnit(INCH.pow(3).asType(
-			Volume.class));
-
-	/**
-	 * A unit of volume equal to <code>4.546 09 {@link #LITRE}</code> (standard
-	 * name <code>gal_uk</code>).
-	 */
-	public static final Unit<Volume> GALLON_UK = addUnit(LITRE.multiply(454609)
-			.divide(100000));
-
-	/**
-	 * A unit of volume equal to one UK gallon, Liquid Unit.
-	 */
-	public static final Unit<Volume> GALLON_LIQUID = addUnit(CUBIC_INCH
-			.multiply(277.42));
-	
-	/**
-	 * A unit of volume equal to <code>1 / 160 {@link #GALLON_UK}</code>
-	 * (standard name <code>oz_fl_uk</code>).
-	 */
-	static final Unit<Volume> OUNCE_LIQUID_UK = addUnit(GALLON_UK
-			.divide(160));
-	
-	/**
-	 * A unit of volume equal to <code>1 / 160 {@link #GALLON_LIQUID}</code>
-	 * (standard name <code>oz_fl</code>).
-	 */
-	public static final Unit<Volume> OUNCE_LIQUID = OUNCE_LIQUID_UK;
-
-	/**
-	 * A unit of volume equal to <code>5 {@link #OUNCE_LIQUID}</code> (standard name
-	 * <code>gi</code>).
-	 */
-	public static final Unit<Volume> GILL = addUnit(OUNCE_LIQUID.multiply(5));
-
-	/**
-	 * A unit of volume equal to <code>20 {@link #OUNCE_LIQUID}</code> (standard name
-	 * <code>pt</code>).
-	 */
-	public static final Unit<Volume> PINT = addUnit(OUNCE_LIQUID.multiply(20));
-
-	/**
-	 * A unit of volume equal to <code>40 {@link #OUNCE_LIQUID}</code> (standard name
-	 * <code>qt</code>).
-	 */
-	public static final Unit<Volume> QUART = addUnit(OUNCE_LIQUID.multiply(40));
-	
-	/**
-	 * A unit of volume <code>~ 1 drop or 0.95 grain of water </code> (standard
-	 * name <code>min</code>).
-	 */
-	public static final Unit<Volume> MINIM = addUnit(MICRO(LITRE).multiply(
-			59.1938802d));
-
-	/**
-	 * A unit of volume equal to <code>20 {@link #MINIM}</code> (standard name
-	 * <code>fl scr</code>).
-	 */
-	public static final Unit<Volume> FLUID_SCRUPLE = addUnit(MINIM.multiply(60));
-
-	/**
-	 * A unit of volume equal to <code>3 {@link #FLUID_SCRUPLE}</code> (standard name
-	 * <code>fl drc</code>).
-	 */
-	public static final Unit<Volume> FLUID_DRACHM = addUnit(FLUID_SCRUPLE.multiply(3));
-
-
-	public String getName() {
-		return getClass().getSimpleName();
-	}
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.system;

+

+

+import static org.eclipse.uomo.units.SI.*;

+import static org.eclipse.uomo.units.SI.Prefix.MICRO;

+import static org.eclipse.uomo.units.internal.NonSI.AVOIRDUPOIS_POUND_DIVIDEND;

+import static org.eclipse.uomo.units.internal.NonSI.AVOIRDUPOIS_POUND_DIVISOR;

+

+import org.eclipse.uomo.units.AbstractSystemOfUnits;

+import org.unitsofmeasurement.quantity.Area;

+import org.unitsofmeasurement.quantity.Length;

+import org.unitsofmeasurement.quantity.Mass;

+import org.unitsofmeasurement.quantity.Temperature;

+import org.unitsofmeasurement.quantity.Time;

+import org.unitsofmeasurement.quantity.Volume;

+import org.unitsofmeasurement.unit.SystemOfUnits;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * <p>

+ * This class contains units from the Imperial system.

+ * </p>

+ * <p>

+ * 

+ * @noextend This class is not intended to be extended by clients.

+ * 

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.1 ($Revision: 332 $), $Date: 2011-09-11 14:52:11 +0200 $

+ * @see <a

+ *      href="http://en.wikipedia.org/wiki/http://en.wikipedia.org/wiki/Imperial_unit">Wikipedia:

+ *      Imperial Units</a>

+ */

+public final class Imperial extends AbstractSystemOfUnits  {

+

+	/**

+	 * Default constructor (prevents this class from being instantiated).

+	 */

+	private Imperial() {

+	}

+

+	/**

+	 * Returns the unique instance of this class.

+	 * 

+	 * @return the Imperial instance.

+	 */

+	public static SystemOfUnits getInstance() {

+		return INSTANCE;

+	}

+

+	private static final Imperial INSTANCE = new Imperial();

+

+	// //////////

+	// Length //

+	// //////////

+

+	/**

+	 * A unit of length equal to <code>0.0254 m</code> (standard name

+	 * <code>in</code>).

+	 */

+	public static final Unit<Length> INCH = USCustomary.INCH;

+	

+	// ////////

+	// Mass //

+	// ////////

+

+	/**

+	 * A unit of mass equal to <code>453.59237 grams</code> (avoirdupois pound,

+	 * standard name <code>lb</code>).

+	 */

+	static final Unit<Mass> POUND = addUnit(KILOGRAM.multiply(

+			AVOIRDUPOIS_POUND_DIVIDEND).divide(AVOIRDUPOIS_POUND_DIVISOR));

+

+	/**

+	 * A unit of mass equal to <code>1 / 16 {@link #POUND}</code> (standard name

+	 * <code>oz</code>).

+	 */

+	public static final Unit<Mass> OUNCE = addUnit(POUND.divide(16));

+	

+	/**

+	 * A unit of mass equal to <code>2240 {@link #POUND}</code> (long ton,

+	 * standard name <code>ton_uk</code>).

+	 */

+	public static final Unit<Mass> TON_UK = addUnit(POUND.multiply(2240));

+

+	/**

+	 * A unit of mass equal to <code>1000 kg</code> (metric ton, standard name

+	 * <code>t</code>).

+	 */

+	public static final Unit<Mass> METRIC_TON = addUnit(KILOGRAM.multiply(1000));

+

+	// ///////////////

+	// Temperature //

+	// ///////////////

+

+	/**

+	 * A unit of temperature equal to <code>5/9 °K</code> (standard name

+	 * <code>°R</code>).

+	 */

+	static final Unit<Temperature> RANKINE = addUnit(KELVIN.multiply(5)

+			.divide(9));

+

+	/**

+	 * A unit of temperature equal to degree Rankine minus

+	 * <code>459.67 °R</code> (standard name <code>°F</code>).

+	 * 

+	 * @see #RANKINE

+	 */

+	static final Unit<Temperature> FAHRENHEIT = addUnit(RANKINE

+			.add(459.67));

+

+	// /////////

+	// Angle //

+	// /////////

+

+	

+	// ////////////

+	// TimeUnit //

+	// ////////////

+	/**

+	 * A unit of time equal to <code>60 s</code> (standard name <code>min</code>

+	 * ).

+	 */

+	static final Unit<Time> MINUTE = addUnit(SECOND.multiply(60));

+

+	/**

+	 * A unit of duration equal to <code>60 {@link #MINUTE}</code> (standard

+	 * name <code>h</code>).

+	 */

+	static final Unit<Time> HOUR = addUnit(MINUTE.multiply(60));

+

+	// ////////////

+	// Velocity //

+	// ////////////

+

+

+	// ////////

+	// Area //

+	// ////////

+

+	/**

+	 * A unit of area (standard name <code>sft</code>

+	 * ).

+	 */

+	public static final Unit<Area> SQUARE_FOOT = USCustomary.SQUARE_FOOT;

+	

+	/**

+	 * One acre is 43,560 <code>square feet</code> (standard name <code>a</code>

+	 * ).

+	 */

+	public static final Unit<Area> ACRE = addUnit(SQUARE_FOOT.multiply(43560));

+

+	// ///////////////

+	// Data Amount //

+	// ///////////////

+	

+

+	// //////////

+	// Energy //

+	// //////////

+

+

+	// //////////

+	// Volume //

+	// //////////

+	/**

+	 * A unit of volume equal to one cubic decimeter (default label

+	 * <code>L</code>, also recognized <code>µL, mL, cL, dL</code>).

+	 */

+	static final Unit<Volume> LITRE = addUnit(CUBIC_METRE.divide(1000));

+

+	/**

+	 * A unit of volume equal to one cubic inch (<code>in³</code>).

+	 */

+	static final Unit<Volume> CUBIC_INCH = addUnit(INCH.pow(3).asType(

+			Volume.class));

+

+	/**

+	 * A unit of volume equal to <code>4.546 09 {@link #LITRE}</code> (standard

+	 * name <code>gal_uk</code>).

+	 */

+	public static final Unit<Volume> GALLON_UK = addUnit(LITRE.multiply(454609)

+			.divide(100000));

+

+	/**

+	 * A unit of volume equal to one UK gallon, Liquid Unit.

+	 */

+	public static final Unit<Volume> GALLON_LIQUID = addUnit(CUBIC_INCH

+			.multiply(277.42));

+	

+	/**

+	 * A unit of volume equal to <code>1 / 160 {@link #GALLON_UK}</code>

+	 * (standard name <code>oz_fl_uk</code>).

+	 */

+	static final Unit<Volume> OUNCE_LIQUID_UK = addUnit(GALLON_UK

+			.divide(160));

+	

+	/**

+	 * A unit of volume equal to <code>1 / 160 {@link #GALLON_LIQUID}</code>

+	 * (standard name <code>oz_fl</code>).

+	 */

+	public static final Unit<Volume> OUNCE_LIQUID = OUNCE_LIQUID_UK;

+

+	/**

+	 * A unit of volume equal to <code>5 {@link #OUNCE_LIQUID}</code> (standard name

+	 * <code>gi</code>).

+	 */

+	public static final Unit<Volume> GILL = addUnit(OUNCE_LIQUID.multiply(5));

+

+	/**

+	 * A unit of volume equal to <code>20 {@link #OUNCE_LIQUID}</code> (standard name

+	 * <code>pt</code>).

+	 */

+	public static final Unit<Volume> PINT = addUnit(OUNCE_LIQUID.multiply(20));

+

+	/**

+	 * A unit of volume equal to <code>40 {@link #OUNCE_LIQUID}</code> (standard name

+	 * <code>qt</code>).

+	 */

+	public static final Unit<Volume> QUART = addUnit(OUNCE_LIQUID.multiply(40));

+	

+	/**

+	 * A unit of volume <code>~ 1 drop or 0.95 grain of water </code> (standard

+	 * name <code>min</code>).

+	 */

+	public static final Unit<Volume> MINIM = addUnit(MICRO(LITRE).multiply(

+			59.1938802d));

+

+	/**

+	 * A unit of volume equal to <code>20 {@link #MINIM}</code> (standard name

+	 * <code>fl scr</code>).

+	 */

+	public static final Unit<Volume> FLUID_SCRUPLE = addUnit(MINIM.multiply(60));

+

+	/**

+	 * A unit of volume equal to <code>3 {@link #FLUID_SCRUPLE}</code> (standard name

+	 * <code>fl drc</code>).

+	 */

+	public static final Unit<Volume> FLUID_DRACHM = addUnit(FLUID_SCRUPLE.multiply(3));

+

+

+	public String getName() {

+		return getClass().getSimpleName();

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/system/USCustomary.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/system/USCustomary.java
index a5eba34..8746a22 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/system/USCustomary.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/impl/system/USCustomary.java
@@ -1,393 +1,393 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-package org.eclipse.uomo.units.impl.system;
-
-import static org.eclipse.uomo.units.SI.*;
-import static org.eclipse.uomo.units.SI.Prefix.MICRO;
-
-import org.eclipse.uomo.units.AbstractSystemOfUnits;
-import org.eclipse.uomo.units.AbstractUnit;
-import org.eclipse.uomo.units.Messages;
-import org.eclipse.uomo.units.SI;
-import org.eclipse.uomo.units.impl.ProductUnit;
-import org.unitsofmeasurement.quantity.Angle;
-import org.unitsofmeasurement.quantity.Area;
-import org.unitsofmeasurement.quantity.Information;
-import org.unitsofmeasurement.quantity.Energy;
-import org.unitsofmeasurement.quantity.Length;
-import org.unitsofmeasurement.quantity.Mass;
-import org.unitsofmeasurement.quantity.Power;
-import org.unitsofmeasurement.quantity.Temperature;
-import org.unitsofmeasurement.quantity.Time;
-import org.unitsofmeasurement.quantity.Velocity;
-import org.unitsofmeasurement.quantity.Volume;
-import org.unitsofmeasurement.unit.SystemOfUnits;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * <p>
- * This class contains units from the United States customary system.
- * </p>
- * <p>
- * 
- * @noextend This class is not intended to be extended by clients.
- * 
- * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.15 ($Revision: 332 $), $Date: 2011-09-11 14:52:11 +0200 $
- * @see <a
- *      href="http://en.wikipedia.org/wiki/United_States_customary_units">Wikipedia:
- *      United State Customary Units</a>
- */
-public final class USCustomary extends AbstractSystemOfUnits {
-
-	/**
-	 * Default constructor (prevents this class from being instantiated).
-	 */
-	private USCustomary() {
-	}
-
-	/**
-	 * Returns the unique instance of this class.
-	 * 
-	 * @return the USCustomary instance.
-	 */
-	public static SystemOfUnits getInstance() {
-		return INSTANCE;
-	}
-
-	private static final USCustomary INSTANCE = new USCustomary();
-
-	// //////////
-	// Length //
-	// //////////
-	/**
-	 * US name for {@link SI#METRE}.
-	 */
-	public static final Unit<Length> METER = METRE;
-
-	/**
-	 * A unit of length equal to <code>0.3048 m</code> (standard name
-	 * <code>ft</code>).
-	 */
-	public static final Unit<Length> FOOT = addUnit(METER.multiply(3048)
-			.divide(10000));
-
-	/**
-	 * A unit of length equal to <code>1200/3937 m</code> (standard name
-	 * <code>foot_survey_us</code>). See also: <a
-	 * href="http://www.sizes.com/units/foot.htm">foot</a>
-	 */
-	public static final Unit<Length> FOOT_SURVEY = addUnit(METER.multiply(1200)
-			.divide(3937));
-
-	/**
-	 * A unit of length equal to <code>0.9144 m</code> (standard name
-	 * <code>yd</code>).
-	 */
-	public static final Unit<Length> YARD = addUnit(FOOT.multiply(3));
-
-	/**
-	 * A unit of length equal to <code>0.0254 m</code> (standard name
-	 * <code>in</code>).
-	 */
-	public static final Unit<Length> INCH = addUnit(FOOT.divide(12));
-
-	/**
-	 * A unit of length equal to <code>1609.344 m</code> (standard name
-	 * <code>mi</code>).
-	 */
-	public static final Unit<Length> MILE = addUnit(METER.multiply(1609344)
-			.divide(1000));
-
-	/**
-	 * A unit of length equal to the distance that light travels in one year
-	 * through a vacuum (standard name <code>ly</code>).
-	 */
-	public static final Unit<Length> LIGHT_YEAR = addUnit(METRE
-			.multiply(9.460528405e15));
-	
-	/**
-	 * A unit of length equal to <code>1852.0 m</code> (standard name
-	 * <code>nmi</code>).
-	 */
-	public static final Unit<Length> NAUTICAL_MILE = addUnit(METER
-			.multiply(1852));
-
-	// ////////
-	// Mass //
-	// ////////
-
-	/**
-	 * A unit of mass equal to <code>453.59237 grams</code> (avoirdupois pound,
-	 * standard name <code>lb</code>).
-	 */
-	public static final Unit<Mass> POUND = addUnit(KILOGRAM.multiply(45359237)
-			.divide(100000000), Messages.US_lb_name);
-
-	/**
-	 * A unit of mass equal to <code>1 / 16 {@link #POUND}</code> (standard name
-	 * <code>oz</code>).
-	 */
-	public static final Unit<Mass> OUNCE = addUnit(POUND.divide(16));
-
-	/**
-	 * A unit of mass equal to <code>2000 {@link #POUND}</code> (short ton,
-	 * standard name <code>ton</code>).
-	 */
-	public static final Unit<Mass> TON = addUnit(POUND.multiply(2000));
-
-	// ///////////////
-	// Temperature //
-	// ///////////////
-
-	/**
-	 * A unit of temperature equal to <code>5/9 °K</code> (standard name
-	 * <code>°R</code>).
-	 */
-	public static final Unit<Temperature> RANKINE = addUnit(KELVIN.multiply(5)
-			.divide(9));
-
-	/**
-	 * A unit of temperature equal to degree Rankine minus
-	 * <code>459.67 °R</code> (standard name <code>°F</code>).
-	 * 
-	 * @see #RANKINE
-	 */
-	public static final Unit<Temperature> FAHRENHEIT = addUnit(RANKINE
-			.add(459.67));
-
-	// /////////
-	// Angle //
-	// /////////
-
-	/**
-	 * A unit of angle equal to a full circle or <code>2<i>&pi;</i>
-	 * {@link SI#RADIAN}</code> (standard name <code>rev</code>).
-	 */
-	public static final Unit<Angle> REVOLUTION = addUnit(RADIAN.multiply(2)
-			.multiply(Math.PI).asType(Angle.class));
-
-	/**
-	 * A unit of angle equal to <code>1/360 {@link #REVOLUTION}</code> (standard
-	 * name <code>deg</code>).
-	 */
-	public static final Unit<Angle> DEGREE_ANGLE = addUnit(REVOLUTION
-			.divide(360));
-
-	/**
-	 * A unit of angle equal to <code>1/60 {@link #DEGREE_ANGLE}</code>
-	 * (standard name <code>'</code>).
-	 */
-	public static final Unit<Angle> MINUTE_ANGLE = addUnit(DEGREE_ANGLE
-			.divide(60));
-
-	/**
-	 * A unit of angle equal to <code>1/60 {@link #MINUTE_ANGLE}</code>
-	 * (standard name <code>"</code>).
-	 */
-	public static final Unit<Angle> SECOND_ANGLE = addUnit(MINUTE_ANGLE
-			.divide(60));
-
-	/**
-	 * A unit of angle equal to <code>0.01 {@link SI#RADIAN}</code> (standard
-	 * name <code>centiradian</code>).
-	 */
-	public static final Unit<Angle> CENTIRADIAN = addUnit(RADIAN.divide(100));
-
-	/**
-	 * A unit of angle measure equal to <code>1/400 {@link #REVOLUTION}</code>
-	 * (standard name <code>grade</code> ).
-	 */
-	public static final Unit<Angle> GRADE = addUnit(REVOLUTION.divide(400));
-	
-	// ////////////
-	// TimeUnit //
-	// ////////////
-	/**
-	 * A unit of time equal to <code>60 s</code> (standard name <code>min</code>
-	 * ).
-	 */
-	public static final Unit<Time> MINUTE = addUnit(SECOND.multiply(60));
-
-	/**
-	 * A unit of duration equal to <code>60 {@link #MINUTE}</code> (standard
-	 * name <code>h</code>).
-	 */
-	public static final Unit<Time> HOUR = addUnit(MINUTE.multiply(60));
-
-	// ////////////
-	// Velocity //
-	// ////////////
-	/**
-	 * A unit of velocity expressing the number of {@link #FOOT feet} per
-	 * {@link SI#SECOND second}.
-	 */
-	public static final Unit<Velocity> FEET_PER_SECOND = addUnit(
-			FOOT.divide(SECOND)).asType(Velocity.class);
-
-	/**
-	 * A unit of velocity expressing the number of international {@link #MILE
-	 * miles} per {@link #HOUR hour} (abbreviation <code>mph</code>).
-	 */
-	public static final Unit<Velocity> MILES_PER_HOUR = addUnit(
-			MILE.divide(HOUR)).asType(Velocity.class);
-
-	/**
-	 * A unit of velocity expressing the number of {@link #NAUTICAL_MILE
-	 * nautical miles} per {@link #HOUR hour} (abbreviation <code>kn</code>).
-	 */
-	public static final Unit<Velocity> KNOT = addUnit(
-			NAUTICAL_MILE.divide(HOUR)).asType(Velocity.class);
-
-	// ////////
-	// Area //
-	// ////////
-
-	/**
-	 * A unit of area (standard name <code>sft</code>
-	 * ).
-	 */
-	public static final Unit<Area> SQUARE_FOOT = addUnit(new ProductUnit<Area>(
-			(AbstractUnit<?>) FOOT.multiply(FOOT)));
-
-	/**
-	 * A unit of area equal to <code>100 m²</code> (standard name <code>a</code>
-	 * ).
-	 */
-	public static final Unit<Area> ARE = addUnit(SQUARE_METRE.multiply(100));
-	
-	/**
-	 * A unit of area equal to <code>100 {@link #ARE}</code> (standard name
-	 * <code>ha</code>).
-	 */
-	static final Unit<Area> HECTARE = addUnit(ARE.multiply(100)); // Exact.
-	
-	// ///////////////
-	// Data Amount //
-	// ///////////////
-	/**
-	 * A unit of data amount equal to <code>8 {@link SI#BIT}</code> (BinarY
-	 * TErm, standard name <code>byte</code>).
-	 */
-	public static final Unit<Information> BYTE = addUnit(BIT.multiply(8));
-
-	/**
-	 * Equivalent {@link #BYTE}
-	 */
-	public static final Unit<Information> OCTET = BYTE;
-
-	// //////////
-	// Energy //
-	// //////////
-
-	/**
-	 * A unit of energy equal to one electron-volt (standard name
-	 * <code>eV</code>, also recognized <code>keV, MeV, GeV</code>).
-	 */
-	public static final Unit<Energy> ELECTRON_VOLT = addUnit(JOULE
-			.multiply(1.602176462e-19));
-	
-	// //////////
-	// Power   //
-	// //////////
-	
-	/**
-	 * Horsepower (HP) is the name of several units of measurement of power.
-	 * The most common definitions equal between 735.5 and 750 watts.
-	 * Horsepower was originally defined to compare the output of steam engines with the power of draft horses. 
-	 * The unit was widely adopted to measure the output of piston engines, turbines, electric motors, and other machinery. The definition of the unit varied between geographical regions. Most countries now use the SI unit watt for measurement of power. With the implementation of the EU Directive 80/181/EEC on January 1, 2010, the use of horsepower in the EU is only permitted as supplementary unit.
-	 */
-	public static final Unit<Power> HORSEPOWER = addUnit(WATT.multiply(735.499));
-
-	// //////////
-	// Volume //
-	// //////////
-	/**
-	 * A unit of volume equal to one cubic decimeter (default label
-	 * <code>L</code>, also recognized <code>µL, mL, cL, dL</code>).
-	 */
-	public static final Unit<Volume> LITER = addUnit(CUBIC_METRE.divide(1000));
-
-	/**
-	 * A unit of volume equal to one cubic inch (<code>in³</code>).
-	 */
-	public static final Unit<Volume> CUBIC_INCH = addUnit(INCH.pow(3).asType(
-			Volume.class));
-
-	/**
-	 * A unit of volume equal to one US dry gallon. (standard name
-	 * <code>gallon_dry_us</code>).
-	 */
-	public static final Unit<Volume> GALLON_DRY = addUnit(CUBIC_INCH.multiply(
-			2688025).divide(10000));
-
-	/**
-	 * A unit of volume equal to one US gallon, Liquid Unit. The U.S. liquid
-	 * gallon is based on the Queen Anne or Wine gallon occupying 231 cubic
-	 * inches (standard name <code>gal</code>).
-	 */
-	public static final Unit<Volume> GALLON_LIQUID = addUnit(CUBIC_INCH
-			.multiply(231));
-
-	/**
-	 * A unit of volume equal to <code>1 / 128 {@link #GALLON_LIQUID}</code>
-	 * (standard name <code>oz_fl</code>).
-	 */
-	public static final Unit<Volume> OUNCE_LIQUID = addUnit(GALLON_LIQUID
-			.divide(128));
-
-	/**
-	 * A unit of volume <code>~ 1 drop or 0.95 grain of water </code> (standard
-	 * name <code>min</code>).
-	 */
-	public static final Unit<Volume> MINIM = addUnit(MICRO(LITER).multiply(
-			61.61152d));
-
-	/**
-	 * A unit of volume equal to <code>60 {@link #MINIM}</code> (standard name
-	 * <code>fl dr</code>).
-	 */
-	public static final Unit<Volume> FLUID_DRAM = addUnit(MINIM.multiply(60));
-
-	/**
-	 * A unit of volume equal to <code>80 {@link #MINIM}</code> (standard name
-	 * <code>tsp</code>).
-	 */
-	public static final Unit<Volume> TEASPOON = addUnit(MINIM.multiply(80));
-
-	/**
-	 * A unit of volume equal to <code>3 {@link #TEASPOON}</code> (standard name
-	 * <code>Tbsp</code>).
-	 */
-	public static final Unit<Volume> TABLESPOON = addUnit(TEASPOON.multiply(3));
-
-	/**
-	 * A unit of volume equal to <code>238.4810 {@link #LITER}</code> (standard
-	 * name <code>bbl</code>).
-	 */
-	public static final Unit<Volume> OIL_BARREL = addUnit(LITER
-			.multiply(238.4810d));
-
-	/**
-	 * Holds the international foot: 0.3048 m exact.
-	 */
-	// private static final int INTERNATIONAL_FOOT_DIVIDEND = 3048;
-
-	// private static final int INTERNATIONAL_FOOT_DIViSOR = 10000;
-
-
-
-	@Override
-	public String getName() {
-		return getClass().getSimpleName();
-	}
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+package org.eclipse.uomo.units.impl.system;

+

+import static org.eclipse.uomo.units.SI.*;

+import static org.eclipse.uomo.units.SI.Prefix.MICRO;

+

+import org.eclipse.uomo.units.AbstractSystemOfUnits;

+import org.eclipse.uomo.units.AbstractUnit;

+import org.eclipse.uomo.units.Messages;

+import org.eclipse.uomo.units.SI;

+import org.eclipse.uomo.units.impl.ProductUnit;

+import org.unitsofmeasurement.quantity.Angle;

+import org.unitsofmeasurement.quantity.Area;

+import org.unitsofmeasurement.quantity.Information;

+import org.unitsofmeasurement.quantity.Energy;

+import org.unitsofmeasurement.quantity.Length;

+import org.unitsofmeasurement.quantity.Mass;

+import org.unitsofmeasurement.quantity.Power;

+import org.unitsofmeasurement.quantity.Temperature;

+import org.unitsofmeasurement.quantity.Time;

+import org.unitsofmeasurement.quantity.Velocity;

+import org.unitsofmeasurement.quantity.Volume;

+import org.unitsofmeasurement.unit.SystemOfUnits;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * <p>

+ * This class contains units from the United States customary system.

+ * </p>

+ * <p>

+ * 

+ * @noextend This class is not intended to be extended by clients.

+ * 

+ * @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.15 ($Revision: 332 $), $Date: 2011-09-11 14:52:11 +0200 $

+ * @see <a

+ *      href="http://en.wikipedia.org/wiki/United_States_customary_units">Wikipedia:

+ *      United State Customary Units</a>

+ */

+public final class USCustomary extends AbstractSystemOfUnits {

+

+	/**

+	 * Default constructor (prevents this class from being instantiated).

+	 */

+	private USCustomary() {

+	}

+

+	/**

+	 * Returns the unique instance of this class.

+	 * 

+	 * @return the USCustomary instance.

+	 */

+	public static SystemOfUnits getInstance() {

+		return INSTANCE;

+	}

+

+	private static final USCustomary INSTANCE = new USCustomary();

+

+	// //////////

+	// Length //

+	// //////////

+	/**

+	 * US name for {@link SI#METRE}.

+	 */

+	public static final Unit<Length> METER = METRE;

+

+	/**

+	 * A unit of length equal to <code>0.3048 m</code> (standard name

+	 * <code>ft</code>).

+	 */

+	public static final Unit<Length> FOOT = addUnit(METER.multiply(3048)

+			.divide(10000));

+

+	/**

+	 * A unit of length equal to <code>1200/3937 m</code> (standard name

+	 * <code>foot_survey_us</code>). See also: <a

+	 * href="http://www.sizes.com/units/foot.htm">foot</a>

+	 */

+	public static final Unit<Length> FOOT_SURVEY = addUnit(METER.multiply(1200)

+			.divide(3937));

+

+	/**

+	 * A unit of length equal to <code>0.9144 m</code> (standard name

+	 * <code>yd</code>).

+	 */

+	public static final Unit<Length> YARD = addUnit(FOOT.multiply(3));

+

+	/**

+	 * A unit of length equal to <code>0.0254 m</code> (standard name

+	 * <code>in</code>).

+	 */

+	public static final Unit<Length> INCH = addUnit(FOOT.divide(12));

+

+	/**

+	 * A unit of length equal to <code>1609.344 m</code> (standard name

+	 * <code>mi</code>).

+	 */

+	public static final Unit<Length> MILE = addUnit(METER.multiply(1609344)

+			.divide(1000));

+

+	/**

+	 * A unit of length equal to the distance that light travels in one year

+	 * through a vacuum (standard name <code>ly</code>).

+	 */

+	public static final Unit<Length> LIGHT_YEAR = addUnit(METRE

+			.multiply(9.460528405e15));

+	

+	/**

+	 * A unit of length equal to <code>1852.0 m</code> (standard name

+	 * <code>nmi</code>).

+	 */

+	public static final Unit<Length> NAUTICAL_MILE = addUnit(METER

+			.multiply(1852));

+

+	// ////////

+	// Mass //

+	// ////////

+

+	/**

+	 * A unit of mass equal to <code>453.59237 grams</code> (avoirdupois pound,

+	 * standard name <code>lb</code>).

+	 */

+	public static final Unit<Mass> POUND = addUnit(KILOGRAM.multiply(45359237)

+			.divide(100000000), Messages.US_lb_name);

+

+	/**

+	 * A unit of mass equal to <code>1 / 16 {@link #POUND}</code> (standard name

+	 * <code>oz</code>).

+	 */

+	public static final Unit<Mass> OUNCE = addUnit(POUND.divide(16));

+

+	/**

+	 * A unit of mass equal to <code>2000 {@link #POUND}</code> (short ton,

+	 * standard name <code>ton</code>).

+	 */

+	public static final Unit<Mass> TON = addUnit(POUND.multiply(2000));

+

+	// ///////////////

+	// Temperature //

+	// ///////////////

+

+	/**

+	 * A unit of temperature equal to <code>5/9 °K</code> (standard name

+	 * <code>°R</code>).

+	 */

+	public static final Unit<Temperature> RANKINE = addUnit(KELVIN.multiply(5)

+			.divide(9));

+

+	/**

+	 * A unit of temperature equal to degree Rankine minus

+	 * <code>459.67 °R</code> (standard name <code>°F</code>).

+	 * 

+	 * @see #RANKINE

+	 */

+	public static final Unit<Temperature> FAHRENHEIT = addUnit(RANKINE

+			.add(459.67));

+

+	// /////////

+	// Angle //

+	// /////////

+

+	/**

+	 * A unit of angle equal to a full circle or <code>2<i>&pi;</i>

+	 * {@link SI#RADIAN}</code> (standard name <code>rev</code>).

+	 */

+	public static final Unit<Angle> REVOLUTION = addUnit(RADIAN.multiply(2)

+			.multiply(Math.PI).asType(Angle.class));

+

+	/**

+	 * A unit of angle equal to <code>1/360 {@link #REVOLUTION}</code> (standard

+	 * name <code>deg</code>).

+	 */

+	public static final Unit<Angle> DEGREE_ANGLE = addUnit(REVOLUTION

+			.divide(360));

+

+	/**

+	 * A unit of angle equal to <code>1/60 {@link #DEGREE_ANGLE}</code>

+	 * (standard name <code>'</code>).

+	 */

+	public static final Unit<Angle> MINUTE_ANGLE = addUnit(DEGREE_ANGLE

+			.divide(60));

+

+	/**

+	 * A unit of angle equal to <code>1/60 {@link #MINUTE_ANGLE}</code>

+	 * (standard name <code>"</code>).

+	 */

+	public static final Unit<Angle> SECOND_ANGLE = addUnit(MINUTE_ANGLE

+			.divide(60));

+

+	/**

+	 * A unit of angle equal to <code>0.01 {@link SI#RADIAN}</code> (standard

+	 * name <code>centiradian</code>).

+	 */

+	public static final Unit<Angle> CENTIRADIAN = addUnit(RADIAN.divide(100));

+

+	/**

+	 * A unit of angle measure equal to <code>1/400 {@link #REVOLUTION}</code>

+	 * (standard name <code>grade</code> ).

+	 */

+	public static final Unit<Angle> GRADE = addUnit(REVOLUTION.divide(400));

+	

+	// ////////////

+	// TimeUnit //

+	// ////////////

+	/**

+	 * A unit of time equal to <code>60 s</code> (standard name <code>min</code>

+	 * ).

+	 */

+	public static final Unit<Time> MINUTE = addUnit(SECOND.multiply(60));

+

+	/**

+	 * A unit of duration equal to <code>60 {@link #MINUTE}</code> (standard

+	 * name <code>h</code>).

+	 */

+	public static final Unit<Time> HOUR = addUnit(MINUTE.multiply(60));

+

+	// ////////////

+	// Velocity //

+	// ////////////

+	/**

+	 * A unit of velocity expressing the number of {@link #FOOT feet} per

+	 * {@link SI#SECOND second}.

+	 */

+	public static final Unit<Velocity> FEET_PER_SECOND = addUnit(

+			FOOT.divide(SECOND)).asType(Velocity.class);

+

+	/**

+	 * A unit of velocity expressing the number of international {@link #MILE

+	 * miles} per {@link #HOUR hour} (abbreviation <code>mph</code>).

+	 */

+	public static final Unit<Velocity> MILES_PER_HOUR = addUnit(

+			MILE.divide(HOUR)).asType(Velocity.class);

+

+	/**

+	 * A unit of velocity expressing the number of {@link #NAUTICAL_MILE

+	 * nautical miles} per {@link #HOUR hour} (abbreviation <code>kn</code>).

+	 */

+	public static final Unit<Velocity> KNOT = addUnit(

+			NAUTICAL_MILE.divide(HOUR)).asType(Velocity.class);

+

+	// ////////

+	// Area //

+	// ////////

+

+	/**

+	 * A unit of area (standard name <code>sft</code>

+	 * ).

+	 */

+	public static final Unit<Area> SQUARE_FOOT = addUnit(new ProductUnit<Area>(

+			(AbstractUnit<?>) FOOT.multiply(FOOT)));

+

+	/**

+	 * A unit of area equal to <code>100 m²</code> (standard name <code>a</code>

+	 * ).

+	 */

+	public static final Unit<Area> ARE = addUnit(SQUARE_METRE.multiply(100));

+	

+	/**

+	 * A unit of area equal to <code>100 {@link #ARE}</code> (standard name

+	 * <code>ha</code>).

+	 */

+	static final Unit<Area> HECTARE = addUnit(ARE.multiply(100)); // Exact.

+	

+	// ///////////////

+	// Data Amount //

+	// ///////////////

+	/**

+	 * A unit of data amount equal to <code>8 {@link SI#BIT}</code> (BinarY

+	 * TErm, standard name <code>byte</code>).

+	 */

+	public static final Unit<Information> BYTE = addUnit(BIT.multiply(8));

+

+	/**

+	 * Equivalent {@link #BYTE}

+	 */

+	public static final Unit<Information> OCTET = BYTE;

+

+	// //////////

+	// Energy //

+	// //////////

+

+	/**

+	 * A unit of energy equal to one electron-volt (standard name

+	 * <code>eV</code>, also recognized <code>keV, MeV, GeV</code>).

+	 */

+	public static final Unit<Energy> ELECTRON_VOLT = addUnit(JOULE

+			.multiply(1.602176462e-19));

+	

+	// //////////

+	// Power   //

+	// //////////

+	

+	/**

+	 * Horsepower (HP) is the name of several units of measurement of power.

+	 * The most common definitions equal between 735.5 and 750 watts.

+	 * Horsepower was originally defined to compare the output of steam engines with the power of draft horses. 

+	 * The unit was widely adopted to measure the output of piston engines, turbines, electric motors, and other machinery. The definition of the unit varied between geographical regions. Most countries now use the SI unit watt for measurement of power. With the implementation of the EU Directive 80/181/EEC on January 1, 2010, the use of horsepower in the EU is only permitted as supplementary unit.

+	 */

+	public static final Unit<Power> HORSEPOWER = addUnit(WATT.multiply(735.499));

+

+	// //////////

+	// Volume //

+	// //////////

+	/**

+	 * A unit of volume equal to one cubic decimeter (default label

+	 * <code>L</code>, also recognized <code>µL, mL, cL, dL</code>).

+	 */

+	public static final Unit<Volume> LITER = addUnit(CUBIC_METRE.divide(1000));

+

+	/**

+	 * A unit of volume equal to one cubic inch (<code>in³</code>).

+	 */

+	public static final Unit<Volume> CUBIC_INCH = addUnit(INCH.pow(3).asType(

+			Volume.class));

+

+	/**

+	 * A unit of volume equal to one US dry gallon. (standard name

+	 * <code>gallon_dry_us</code>).

+	 */

+	public static final Unit<Volume> GALLON_DRY = addUnit(CUBIC_INCH.multiply(

+			2688025).divide(10000));

+

+	/**

+	 * A unit of volume equal to one US gallon, Liquid Unit. The U.S. liquid

+	 * gallon is based on the Queen Anne or Wine gallon occupying 231 cubic

+	 * inches (standard name <code>gal</code>).

+	 */

+	public static final Unit<Volume> GALLON_LIQUID = addUnit(CUBIC_INCH

+			.multiply(231));

+

+	/**

+	 * A unit of volume equal to <code>1 / 128 {@link #GALLON_LIQUID}</code>

+	 * (standard name <code>oz_fl</code>).

+	 */

+	public static final Unit<Volume> OUNCE_LIQUID = addUnit(GALLON_LIQUID

+			.divide(128));

+

+	/**

+	 * A unit of volume <code>~ 1 drop or 0.95 grain of water </code> (standard

+	 * name <code>min</code>).

+	 */

+	public static final Unit<Volume> MINIM = addUnit(MICRO(LITER).multiply(

+			61.61152d));

+

+	/**

+	 * A unit of volume equal to <code>60 {@link #MINIM}</code> (standard name

+	 * <code>fl dr</code>).

+	 */

+	public static final Unit<Volume> FLUID_DRAM = addUnit(MINIM.multiply(60));

+

+	/**

+	 * A unit of volume equal to <code>80 {@link #MINIM}</code> (standard name

+	 * <code>tsp</code>).

+	 */

+	public static final Unit<Volume> TEASPOON = addUnit(MINIM.multiply(80));

+

+	/**

+	 * A unit of volume equal to <code>3 {@link #TEASPOON}</code> (standard name

+	 * <code>Tbsp</code>).

+	 */

+	public static final Unit<Volume> TABLESPOON = addUnit(TEASPOON.multiply(3));

+

+	/**

+	 * A unit of volume equal to <code>238.4810 {@link #LITER}</code> (standard

+	 * name <code>bbl</code>).

+	 */

+	public static final Unit<Volume> OIL_BARREL = addUnit(LITER

+			.multiply(238.4810d));

+

+	/**

+	 * Holds the international foot: 0.3048 m exact.

+	 */

+	// private static final int INTERNATIONAL_FOOT_DIVIDEND = 3048;

+

+	// private static final int INTERNATIONAL_FOOT_DIViSOR = 10000;

+

+

+

+	@Override

+	public String getName() {

+		return getClass().getSimpleName();

+	}

+}

diff --git a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/package-info.java b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/package-info.java
index 2929189..d33ab3b 100644
--- a/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/package-info.java
+++ b/bundles/org.eclipse.uomo.units/src/main/java/org/eclipse/uomo/units/package-info.java
@@ -1,89 +1,89 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil, Ikayzo and others - initial API and implementation
- */
-/**
- * Provides support for programatic unit handling.
- *
- * <h3> Standard/NonStandard Units</h3>
- *      Standard units and prefixes are provided by the
- *      {@link org.eclipse.uomo.units.SI} class (Système International d'Unités) and
- *      about 50 non-standard units are available through the
- *      {@link org.eclipse.uomo.units.impl.system.USCustomary} class.
- *
- * <h3>Usage examples:</h3>
- * [code]
- *
- * import static org.eclipse.uomo.units.SI.*;
- * import static org.eclipse.uomo.units.impl.system.USCustomary.*;
-
- * public class Main {
- *     public void main(String[] args) {
- *
- *         // Conversion between units (explicit way).
- *         Unit<Length> sourceUnit = KILO(METRE);
- *         Unit<Length> targetUnit = MILE;
- *         UnitConverter uc = sourceUnit.getConverterTo(targetUnit);
- *         System.out.println(uc.convert(10)); // Converts 10 km to miles.
- *
- *         // Same conversion than above, packed in one line.
- *         System.out.println(KILO(METRE).getConverterTo(MILE).convert(10));
- *
- *         // Retrieval of the system unit (identifies the measurement type).
- *         System.out.println(REVOLUTION.divide(MINUTE).toMetric());
- *
- *         // Dimension checking (allows/disallows conversions)
- *         System.out.println(ELECTRON_VOLT.isCompatible(WATT.times(HOUR)));
- *
- *         // Retrieval of the unit dimension (depends upon the current model).
- *         System.out.println(ELECTRON_VOLT.getDimension());
- *     }
- * }
- *
- * > 6.2137119223733395
- * > 6.2137119223733395
- * > rad/s
- * > true
- * > [L]²·[M]/[T]²
- * [/code]
- *
- * <h3>Unit Parameterization</h3>
- *
- *     Units are parameterized (e.g. &lt;Time extends {@link org.unitsofmeasure.Quantity Quantity}>) to
- *     enforce compile-time checks of units/measures consistency, for example:[code]
- *
- *     Unit<Time> MINUTE = SECOND.times(60); // Ok.
- *     Unit<Time> MINUTE = METRE.times(60); // Compile error.
- *
- *     Unit<Pressure> HECTOPASCAL = HECTO(PASCAL); // Ok.
- *     Unit<Pressure> HECTOPASCAL = HECTO(NEWTON); // Compile error.
- *
- *     TimeAmount duration = new TimeAmount(2, MINUTE); // Ok.
- *     TimeAmount duration = new TimeAmount(2, CELSIUS); // Compile error.
- *
- *     long milliseconds = duration.longValue(MILLI(SECOND)); // Ok.
- *     long milliseconds = duration.longValue(POUND); // Compile error.
- *     [/code]
- *
- *     Runtime checks of dimension consistency can be done for more complex cases.
- *
- *     [code]
- *     Unit<Area> SQUARE_FOOT = FOOT.times(FOOT).asType(Area.class); // Ok.
- *     Unit<Area> SQUARE_FOOT = FOOT.times(KELVIN).asType(Area.class); // Runtime error.
- *
- *     Unit<Temperature> KELVIN = Unit.valueOf("K").asType(Temperature.class); // Ok.
- *     Unit<Temperature> KELVIN = Unit.valueOf("kg").asType(Temperature.class); // Runtime error.
- *     [/code]
- *     </p>
- *
- * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 0.5.1, $Date: 2010-08-10 07:04:41 +0100 (Di, 10 Aug 2010) $
- */
-package org.eclipse.uomo.units;
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil, Ikayzo and others - initial API and implementation

+ */

+/**

+ * Provides support for programatic unit handling.

+ *

+ * <h3> Standard/NonStandard Units</h3>

+ *      Standard units and prefixes are provided by the

+ *      {@link org.eclipse.uomo.units.SI} class (Système International d'Unités) and

+ *      about 50 non-standard units are available through the

+ *      {@link org.eclipse.uomo.units.impl.system.USCustomary} class.

+ *

+ * <h3>Usage examples:</h3>

+ * [code]

+ *

+ * import static org.eclipse.uomo.units.SI.*;

+ * import static org.eclipse.uomo.units.impl.system.USCustomary.*;

+

+ * public class Main {

+ *     public void main(String[] args) {

+ *

+ *         // Conversion between units (explicit way).

+ *         Unit<Length> sourceUnit = KILO(METRE);

+ *         Unit<Length> targetUnit = MILE;

+ *         UnitConverter uc = sourceUnit.getConverterTo(targetUnit);

+ *         System.out.println(uc.convert(10)); // Converts 10 km to miles.

+ *

+ *         // Same conversion than above, packed in one line.

+ *         System.out.println(KILO(METRE).getConverterTo(MILE).convert(10));

+ *

+ *         // Retrieval of the system unit (identifies the measurement type).

+ *         System.out.println(REVOLUTION.divide(MINUTE).toMetric());

+ *

+ *         // Dimension checking (allows/disallows conversions)

+ *         System.out.println(ELECTRON_VOLT.isCompatible(WATT.times(HOUR)));

+ *

+ *         // Retrieval of the unit dimension (depends upon the current model).

+ *         System.out.println(ELECTRON_VOLT.getDimension());

+ *     }

+ * }

+ *

+ * > 6.2137119223733395

+ * > 6.2137119223733395

+ * > rad/s

+ * > true

+ * > [L]²·[M]/[T]²

+ * [/code]

+ *

+ * <h3>Unit Parameterization</h3>

+ *

+ *     Units are parameterized (e.g. &lt;Time extends {@link org.unitsofmeasure.Quantity Quantity}>) to

+ *     enforce compile-time checks of units/measures consistency, for example:[code]

+ *

+ *     Unit<Time> MINUTE = SECOND.times(60); // Ok.

+ *     Unit<Time> MINUTE = METRE.times(60); // Compile error.

+ *

+ *     Unit<Pressure> HECTOPASCAL = HECTO(PASCAL); // Ok.

+ *     Unit<Pressure> HECTOPASCAL = HECTO(NEWTON); // Compile error.

+ *

+ *     TimeAmount duration = new TimeAmount(2, MINUTE); // Ok.

+ *     TimeAmount duration = new TimeAmount(2, CELSIUS); // Compile error.

+ *

+ *     long milliseconds = duration.longValue(MILLI(SECOND)); // Ok.

+ *     long milliseconds = duration.longValue(POUND); // Compile error.

+ *     [/code]

+ *

+ *     Runtime checks of dimension consistency can be done for more complex cases.

+ *

+ *     [code]

+ *     Unit<Area> SQUARE_FOOT = FOOT.times(FOOT).asType(Area.class); // Ok.

+ *     Unit<Area> SQUARE_FOOT = FOOT.times(KELVIN).asType(Area.class); // Runtime error.

+ *

+ *     Unit<Temperature> KELVIN = Unit.valueOf("K").asType(Temperature.class); // Ok.

+ *     Unit<Temperature> KELVIN = Unit.valueOf("kg").asType(Temperature.class); // Runtime error.

+ *     [/code]

+ *     </p>

+ *

+ * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 0.5.1, $Date: 2010-08-10 07:04:41 +0100 (Di, 10 Aug 2010) $

+ */

+package org.eclipse.uomo.units;

diff --git a/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages.properties b/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages.properties
index 6e96c98..18e7765 100644
--- a/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages.properties
+++ b/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages.properties
@@ -1,90 +1,90 @@
-#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
-#
-# Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#    Werner Keil, Ikayzo and others - initial API and implementation
-#
-
-# Imperial Units
-org.eclipse.uomo.units.impl.system.Imperial.GALLON_UK            = gal_uk
-# SI Units
-org.eclipse.uomo.units.SI.AMPERE                     = A
-org.eclipse.uomo.units.SI.AMPERE_TURN                = At
-org.eclipse.uomo.units.SI.BECQUEREL                  = Bq
-org.eclipse.uomo.units.SI.CANDELA                    = cd
-org.eclipse.uomo.units.SI.CELSIUS                    = \u00B0C
-org.eclipse.uomo.units.SI.CELSIUS.1                  = \u2103
-org.eclipse.uomo.units.SI.CELSIUS.2                  = Celsius
-org.eclipse.uomo.units.SI.COULOMB                    = C
-org.eclipse.uomo.units.SI.FARAD                      = F
-org.eclipse.uomo.units.SI.GRAM                       = g
-org.eclipse.uomo.units.SI.GRAY                       = Gy
-org.eclipse.uomo.units.SI.HENRY                      = H
-org.eclipse.uomo.units.SI.HERTZ                      = Hz
-org.eclipse.uomo.units.SI.HERTZ.2                    = hertz
-org.eclipse.uomo.units.SI.JOULE                      = J
-org.eclipse.uomo.units.SI.KATAL                      = kat
-org.eclipse.uomo.units.SI.KELVIN                     = K
-org.eclipse.uomo.units.SI.KILOGRAM                   = kg
-org.eclipse.uomo.units.SI.KILOGRAM.1                 = kilogram
-org.eclipse.uomo.units.SI.LUMEN                      = lm
-org.eclipse.uomo.units.SI.LUX                        = lx
-org.eclipse.uomo.units.SI.METRE                      = m
-org.eclipse.uomo.units.SI.MOLE                       = mol
-org.eclipse.uomo.units.SI.NEWTON                     = N
-org.eclipse.uomo.units.SI.OHM                        = \u03A9
-org.eclipse.uomo.units.SI.PASCAL                     = Pa
-org.eclipse.uomo.units.SI.RADIAN                     = rad
-org.eclipse.uomo.units.SI.ROENTGEN                   = R
-org.eclipse.uomo.units.SI.SECOND                     = s
-org.eclipse.uomo.units.SI.SIEMENS                    = S
-org.eclipse.uomo.units.SI.SIEVERT                    = Sv
-org.eclipse.uomo.units.SI.STERADIAN                  = sr
-org.eclipse.uomo.units.SI.TESLA                      = T
-org.eclipse.uomo.units.SI.VOLT                       = V
-org.eclipse.uomo.units.SI.WATT                       = W
-org.eclipse.uomo.units.SI.WEBER                      = Wb
-
-# US Units
-org.eclipse.uomo.units.impl.system.USCustomary.FAHRENHEIT 		 = \u00B0F
-org.eclipse.uomo.units.impl.system.USCustomary.FAHRENHEIT.1      = \u2109
-org.eclipse.uomo.units.impl.system.USCustomary.FOOT              = ft
-org.eclipse.uomo.units.impl.system.USCustomary.HORSEPOWER        = hp
-org.eclipse.uomo.units.impl.system.USCustomary.GALLON_LIQUID 	 = gal
-org.eclipse.uomo.units.impl.system.USCustomary.GALLON_DRY 	     = gal_dry
-org.eclipse.uomo.units.impl.system.USCustomary.INCH              = in
-org.eclipse.uomo.units.impl.system.USCustomary.KNOT              = kn
-org.eclipse.uomo.units.impl.system.USCustomary.LITER             = l
-org.eclipse.uomo.units.impl.system.USCustomary.MILE    			 = mi
-org.eclipse.uomo.units.impl.system.USCustomary.MILES_PER_HOUR    = mph
-org.eclipse.uomo.units.impl.system.USCustomary.POUND			 = lb
-# SI Prefixes
-org.eclipse.uomo.units.impl.format.ParsePrefix.ATTO  = a
-org.eclipse.uomo.units.impl.format.ParsePrefix.CENTI = c
-org.eclipse.uomo.units.impl.format.ParsePrefix.DECI  = d
-org.eclipse.uomo.units.impl.format.ParsePrefix.DEKA  = da
-org.eclipse.uomo.units.impl.format.ParsePrefix.EXA   = E
-org.eclipse.uomo.units.impl.format.ParsePrefix.FEMTO = f
-org.eclipse.uomo.units.impl.format.ParsePrefix.GIGA  = G
-org.eclipse.uomo.units.impl.format.ParsePrefix.HECTO = h
-org.eclipse.uomo.units.impl.format.ParsePrefix.KILO  = k
-org.eclipse.uomo.units.impl.format.ParsePrefix.MEGA  = M
-org.eclipse.uomo.units.impl.format.ParsePrefix.MICRO = \u00B5
-org.eclipse.uomo.units.impl.format.ParsePrefix.MILLI = m
-org.eclipse.uomo.units.impl.format.ParsePrefix.NANO  = n
-org.eclipse.uomo.units.impl.format.ParsePrefix.PETA  = P
-org.eclipse.uomo.units.impl.format.ParsePrefix.PICO  = p
-org.eclipse.uomo.units.impl.format.ParsePrefix.TERA  = T
-org.eclipse.uomo.units.impl.format.ParsePrefix.YOCTO = y
-org.eclipse.uomo.units.impl.format.ParsePrefix.YOTTA = Y
-org.eclipse.uomo.units.impl.format.ParsePrefix.ZEPTO = z
-org.eclipse.uomo.units.impl.format.ParsePrefix.ZETTA = Z
-
-org.eclipse.uomo.units.impl.system.Imperial.PINT=pt
-
+#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)

+#

+# Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+# All rights reserved. This program and the accompanying materials

+# are made available under the terms of the Eclipse Public License v1.0

+# which accompanies this distribution, and is available at

+# http://www.eclipse.org/legal/epl-v10.html

+#

+# Contributors:

+#    Werner Keil, Ikayzo and others - initial API and implementation

+#

+

+# Imperial Units

+org.eclipse.uomo.units.impl.system.Imperial.GALLON_UK            = gal_uk

+# SI Units

+org.eclipse.uomo.units.SI.AMPERE                     = A

+org.eclipse.uomo.units.SI.AMPERE_TURN                = At

+org.eclipse.uomo.units.SI.BECQUEREL                  = Bq

+org.eclipse.uomo.units.SI.CANDELA                    = cd

+org.eclipse.uomo.units.SI.CELSIUS                    = \u00B0C

+org.eclipse.uomo.units.SI.CELSIUS.1                  = \u2103

+org.eclipse.uomo.units.SI.CELSIUS.2                  = Celsius

+org.eclipse.uomo.units.SI.COULOMB                    = C

+org.eclipse.uomo.units.SI.FARAD                      = F

+org.eclipse.uomo.units.SI.GRAM                       = g

+org.eclipse.uomo.units.SI.GRAY                       = Gy

+org.eclipse.uomo.units.SI.HENRY                      = H

+org.eclipse.uomo.units.SI.HERTZ                      = Hz

+org.eclipse.uomo.units.SI.HERTZ.2                    = hertz

+org.eclipse.uomo.units.SI.JOULE                      = J

+org.eclipse.uomo.units.SI.KATAL                      = kat

+org.eclipse.uomo.units.SI.KELVIN                     = K

+org.eclipse.uomo.units.SI.KILOGRAM                   = kg

+org.eclipse.uomo.units.SI.KILOGRAM.1                 = kilogram

+org.eclipse.uomo.units.SI.LUMEN                      = lm

+org.eclipse.uomo.units.SI.LUX                        = lx

+org.eclipse.uomo.units.SI.METRE                      = m

+org.eclipse.uomo.units.SI.MOLE                       = mol

+org.eclipse.uomo.units.SI.NEWTON                     = N

+org.eclipse.uomo.units.SI.OHM                        = \u03A9

+org.eclipse.uomo.units.SI.PASCAL                     = Pa

+org.eclipse.uomo.units.SI.RADIAN                     = rad

+org.eclipse.uomo.units.SI.ROENTGEN                   = R

+org.eclipse.uomo.units.SI.SECOND                     = s

+org.eclipse.uomo.units.SI.SIEMENS                    = S

+org.eclipse.uomo.units.SI.SIEVERT                    = Sv

+org.eclipse.uomo.units.SI.STERADIAN                  = sr

+org.eclipse.uomo.units.SI.TESLA                      = T

+org.eclipse.uomo.units.SI.VOLT                       = V

+org.eclipse.uomo.units.SI.WATT                       = W

+org.eclipse.uomo.units.SI.WEBER                      = Wb

+

+# US Units

+org.eclipse.uomo.units.impl.system.USCustomary.FAHRENHEIT 		 = \u00B0F

+org.eclipse.uomo.units.impl.system.USCustomary.FAHRENHEIT.1      = \u2109

+org.eclipse.uomo.units.impl.system.USCustomary.FOOT              = ft

+org.eclipse.uomo.units.impl.system.USCustomary.HORSEPOWER        = hp

+org.eclipse.uomo.units.impl.system.USCustomary.GALLON_LIQUID 	 = gal

+org.eclipse.uomo.units.impl.system.USCustomary.GALLON_DRY 	     = gal_dry

+org.eclipse.uomo.units.impl.system.USCustomary.INCH              = in

+org.eclipse.uomo.units.impl.system.USCustomary.KNOT              = kn

+org.eclipse.uomo.units.impl.system.USCustomary.LITER             = l

+org.eclipse.uomo.units.impl.system.USCustomary.MILE    			 = mi

+org.eclipse.uomo.units.impl.system.USCustomary.MILES_PER_HOUR    = mph

+org.eclipse.uomo.units.impl.system.USCustomary.POUND			 = lb

+# SI Prefixes

+org.eclipse.uomo.units.impl.format.ParsePrefix.ATTO  = a

+org.eclipse.uomo.units.impl.format.ParsePrefix.CENTI = c

+org.eclipse.uomo.units.impl.format.ParsePrefix.DECI  = d

+org.eclipse.uomo.units.impl.format.ParsePrefix.DEKA  = da

+org.eclipse.uomo.units.impl.format.ParsePrefix.EXA   = E

+org.eclipse.uomo.units.impl.format.ParsePrefix.FEMTO = f

+org.eclipse.uomo.units.impl.format.ParsePrefix.GIGA  = G

+org.eclipse.uomo.units.impl.format.ParsePrefix.HECTO = h

+org.eclipse.uomo.units.impl.format.ParsePrefix.KILO  = k

+org.eclipse.uomo.units.impl.format.ParsePrefix.MEGA  = M

+org.eclipse.uomo.units.impl.format.ParsePrefix.MICRO = \u00B5

+org.eclipse.uomo.units.impl.format.ParsePrefix.MILLI = m

+org.eclipse.uomo.units.impl.format.ParsePrefix.NANO  = n

+org.eclipse.uomo.units.impl.format.ParsePrefix.PETA  = P

+org.eclipse.uomo.units.impl.format.ParsePrefix.PICO  = p

+org.eclipse.uomo.units.impl.format.ParsePrefix.TERA  = T

+org.eclipse.uomo.units.impl.format.ParsePrefix.YOCTO = y

+org.eclipse.uomo.units.impl.format.ParsePrefix.YOTTA = Y

+org.eclipse.uomo.units.impl.format.ParsePrefix.ZEPTO = z

+org.eclipse.uomo.units.impl.format.ParsePrefix.ZETTA = Z

+

+org.eclipse.uomo.units.impl.system.Imperial.PINT=pt

+

 org.eclipse.uomo.units.impl.system.CommonUnits.KILOMETRES_PER_HOUR=kph
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_en_GB.properties b/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_en_GB.properties
index 45c31eb..a9c2d0e 100644
--- a/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_en_GB.properties
+++ b/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_en_GB.properties
@@ -1,19 +1,19 @@
-#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
-# Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#    Werner Keil, Ikayzo and others - initial API and implementation
-#
-
-org.eclipse.uomo.units.impl.system.Imperial.GALLON_UK        = gal
-org.eclipse.uomo.units.impl.system.Imperial.OUNCE_LIQUID     = fl oz
-org.eclipse.uomo.units.impl.system.Imperial.TON_UK           = ton
-org.eclipse.uomo.units.impl.system.USCustomary.FOOT_SURVEY   = ft_survey_us
-org.eclipse.uomo.units.impl.system.USCustomary.GALLON_DRY    = gallon_dry_us
-org.eclipse.uomo.units.impl.system.USCustomary.GALLON_LIQUID = gal_us
-org.eclipse.uomo.units.impl.system.USCustomary.OUNCE_LIQUID  = fl oz US
-org.eclipse.uomo.units.impl.system.USCustomary.TON           = ton_us
+#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)

+# Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+# All rights reserved. This program and the accompanying materials

+# are made available under the terms of the Eclipse Public License v1.0

+# which accompanies this distribution, and is available at

+# http://www.eclipse.org/legal/epl-v10.html

+#

+# Contributors:

+#    Werner Keil, Ikayzo and others - initial API and implementation

+#

+

+org.eclipse.uomo.units.impl.system.Imperial.GALLON_UK        = gal

+org.eclipse.uomo.units.impl.system.Imperial.OUNCE_LIQUID     = fl oz

+org.eclipse.uomo.units.impl.system.Imperial.TON_UK           = ton

+org.eclipse.uomo.units.impl.system.USCustomary.FOOT_SURVEY   = ft_survey_us

+org.eclipse.uomo.units.impl.system.USCustomary.GALLON_DRY    = gallon_dry_us

+org.eclipse.uomo.units.impl.system.USCustomary.GALLON_LIQUID = gal_us

+org.eclipse.uomo.units.impl.system.USCustomary.OUNCE_LIQUID  = fl oz US

+org.eclipse.uomo.units.impl.system.USCustomary.TON           = ton_us

diff --git a/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_en_US.properties b/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_en_US.properties
index bf8349f..d1426d7 100644
--- a/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_en_US.properties
+++ b/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_en_US.properties
@@ -1,17 +1,17 @@
-#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
-#
-# Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#    Werner Keil, Ikayzo and others - initial API and implementation
-#
-
-org.eclipse.uomo.units.impl.system.USCustomary.ELECTRON_VOLT = eV
-org.eclipse.uomo.units.impl.system.USCustomary.GALLON_DRY    = gallon_dry
-org.eclipse.uomo.units.impl.system.USCustomary.GALLON_LIQUID = gal
-org.eclipse.uomo.units.impl.system.USCustomary.OUNCE_LIQUID  = fl oz
-org.eclipse.uomo.units.impl.system.USCustomary.TON           = ton
+#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)

+#

+# Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+# All rights reserved. This program and the accompanying materials

+# are made available under the terms of the Eclipse Public License v1.0

+# which accompanies this distribution, and is available at

+# http://www.eclipse.org/legal/epl-v10.html

+#

+# Contributors:

+#    Werner Keil, Ikayzo and others - initial API and implementation

+#

+

+org.eclipse.uomo.units.impl.system.USCustomary.ELECTRON_VOLT = eV

+org.eclipse.uomo.units.impl.system.USCustomary.GALLON_DRY    = gallon_dry

+org.eclipse.uomo.units.impl.system.USCustomary.GALLON_LIQUID = gal

+org.eclipse.uomo.units.impl.system.USCustomary.OUNCE_LIQUID  = fl oz

+org.eclipse.uomo.units.impl.system.USCustomary.TON           = ton

diff --git a/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_fr.properties b/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_fr.properties
index 4b79570..e25054a 100644
--- a/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_fr.properties
+++ b/bundles/org.eclipse.uomo.units/src/main/resources/org/eclipse/uomo/units/impl/format/messages_fr.properties
@@ -1,37 +1,37 @@
-#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
-#
-# Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#    Werner Keil, Ikayzo and others - initial API and implementation
-#
-# Contributors:
-#    Werner Keil, Ikayzo and others - initial API and implementation
-#
-#  See LICENSE.txt for full License
-#
-#  See LICENSE.txt for full License
-#
-#  See LICENSE.txt for full License
-#
-#  See LICENSE.txt for full License
-#
-#  See LICENSE.txt for full License
-#
-#  See LICENSE.txt for full License
-#
-#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
-#
-#  Copyright (c) 2005-2010, Jean-Marie Dautelle, Werner Keil
-#  All rights reserved.
-#
-#  See LICENSE.txt for the Specification License
-#
-# NOTE: as a Java properties file, this file must use the
-# ISO 8859-1 encoding, so all non-ASCII Unicode characters 
-# must be escaped using the \uXXXX syntax.
-# See http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html#encoding
+#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)

+#

+# Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+# All rights reserved. This program and the accompanying materials

+# are made available under the terms of the Eclipse Public License v1.0

+# which accompanies this distribution, and is available at

+# http://www.eclipse.org/legal/epl-v10.html

+#

+# Contributors:

+#    Werner Keil, Ikayzo and others - initial API and implementation

+#

+# Contributors:

+#    Werner Keil, Ikayzo and others - initial API and implementation

+#

+#  See LICENSE.txt for full License

+#

+#  See LICENSE.txt for full License

+#

+#  See LICENSE.txt for full License

+#

+#  See LICENSE.txt for full License

+#

+#  See LICENSE.txt for full License

+#

+#  See LICENSE.txt for full License

+#

+#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)

+#

+#  Copyright (c) 2005-2010, Jean-Marie Dautelle, Werner Keil

+#  All rights reserved.

+#

+#  See LICENSE.txt for the Specification License

+#

+# NOTE: as a Java properties file, this file must use the

+# ISO 8859-1 encoding, so all non-ASCII Unicode characters 

+# must be escaped using the \uXXXX syntax.

+# See http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html#encoding

diff --git a/bundles/org.eclipse.uomo.units/src/site/.gitignore b/bundles/org.eclipse.uomo.units/src/site/.gitignore
index 35815fc..e443902 100644
--- a/bundles/org.eclipse.uomo.units/src/site/.gitignore
+++ b/bundles/org.eclipse.uomo.units/src/site/.gitignore
@@ -1 +1 @@
-/.svn
+/.svn

diff --git a/bundles/org.eclipse.uomo.units/src/site/apt/.gitignore b/bundles/org.eclipse.uomo.units/src/site/apt/.gitignore
index 35815fc..e443902 100644
--- a/bundles/org.eclipse.uomo.units/src/site/apt/.gitignore
+++ b/bundles/org.eclipse.uomo.units/src/site/apt/.gitignore
@@ -1 +1 @@
-/.svn
+/.svn

diff --git a/bundles/org.eclipse.uomo.units/src/site/apt/implementations.apt b/bundles/org.eclipse.uomo.units/src/site/apt/implementations.apt
index 655f528..56c49ce 100644
--- a/bundles/org.eclipse.uomo.units/src/site/apt/implementations.apt
+++ b/bundles/org.eclipse.uomo.units/src/site/apt/implementations.apt
@@ -1,16 +1,16 @@
-Implementations
-
-  Some projects that are known to implement the <Unit of Measurement> API are:
-
-    * Open Source Projects
-    
-        * {{{http://www.eclipse.org/uomo/}UOMo}} at Eclipse
-
-        * {{{http://jscience.org/}JScience}}
-    
-    * Commercial / Closed Source
-    
-        * Web Applications at {{{http://www.globalservices.bt.com/}BT Global Services}}
-
-  If you would like to add your product to this list, please let us known on the
-  {{{mail-lists.html}mailing list}}.
+Implementations

+

+  Some projects that are known to implement the <Unit of Measurement> API are:

+

+    * Open Source Projects

+    

+        * {{{http://www.eclipse.org/uomo/}UOMo}} at Eclipse

+

+        * {{{http://jscience.org/}JScience}}

+    

+    * Commercial / Closed Source

+    

+        * Web Applications at {{{http://www.globalservices.bt.com/}BT Global Services}}

+

+  If you would like to add your product to this list, please let us known on the

+  {{{mail-lists.html}mailing list}}.

diff --git a/bundles/org.eclipse.uomo.units/src/site/resources/.gitignore b/bundles/org.eclipse.uomo.units/src/site/resources/.gitignore
index 35815fc..e443902 100644
--- a/bundles/org.eclipse.uomo.units/src/site/resources/.gitignore
+++ b/bundles/org.eclipse.uomo.units/src/site/resources/.gitignore
@@ -1 +1 @@
-/.svn
+/.svn

diff --git a/bundles/org.eclipse.uomo.units/src/site/resources/images/.gitignore b/bundles/org.eclipse.uomo.units/src/site/resources/images/.gitignore
index 35815fc..e443902 100644
--- a/bundles/org.eclipse.uomo.units/src/site/resources/images/.gitignore
+++ b/bundles/org.eclipse.uomo.units/src/site/resources/images/.gitignore
@@ -1 +1 @@
-/.svn
+/.svn

diff --git a/bundles/org.eclipse.uomo.util.tests/.classpath b/bundles/org.eclipse.uomo.util.tests/.classpath
index 0b1bcf9..9bc33d3 100644
--- a/bundles/org.eclipse.uomo.util.tests/.classpath
+++ b/bundles/org.eclipse.uomo.util.tests/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.util.tests/.gitignore b/bundles/org.eclipse.uomo.util.tests/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/bundles/org.eclipse.uomo.util.tests/.gitignore
+++ b/bundles/org.eclipse.uomo.util.tests/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/bundles/org.eclipse.uomo.util.tests/.project b/bundles/org.eclipse.uomo.util.tests/.project
index 1d1e8fe..3d8fa9a 100644
--- a/bundles/org.eclipse.uomo.util.tests/.project
+++ b/bundles/org.eclipse.uomo.util.tests/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.util.tests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.util.tests</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/org.eclipse.uomo.util.tests/.settings/.gitignore b/bundles/org.eclipse.uomo.util.tests/.settings/.gitignore
index 0924da4..c14d360 100644
--- a/bundles/org.eclipse.uomo.util.tests/.settings/.gitignore
+++ b/bundles/org.eclipse.uomo.util.tests/.settings/.gitignore
@@ -1 +1 @@
-/org.eclipse.m2e.core.prefs
+/org.eclipse.m2e.core.prefs

diff --git a/bundles/org.eclipse.uomo.util.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.util.tests/META-INF/MANIFEST.MF
index c2b26f7..fe5b27a 100644
--- a/bundles/org.eclipse.uomo.util.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.util.tests/META-INF/MANIFEST.MF
@@ -1,11 +1,11 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UoMO Units Tests
-Bundle-SymbolicName: org.eclipse.uomo.util.tests
-Bundle-Version: 0.7.0.qualifier
-Bundle-Vendor: Eclipse org
-Fragment-Host: org.eclipse.uomo.util;bundle-version="0.7.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.uomo.util.test,
- org.eclipse.uomo.util.test.numbers
-Require-Bundle: org.junit;bundle-version="4.8.2"
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UoMO Units Tests

+Bundle-SymbolicName: org.eclipse.uomo.util.tests

+Bundle-Version: 0.7.0.qualifier

+Bundle-Vendor: Eclipse org

+Fragment-Host: org.eclipse.uomo.util;bundle-version="0.7.0"

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Export-Package: org.eclipse.uomo.util.test,

+ org.eclipse.uomo.util.test.numbers

+Require-Bundle: org.junit;bundle-version="4.8.2"

diff --git a/bundles/org.eclipse.uomo.util.tests/build.properties b/bundles/org.eclipse.uomo.util.tests/build.properties
index ced5f40..c4e35e4 100644
--- a/bundles/org.eclipse.uomo.util.tests/build.properties
+++ b/bundles/org.eclipse.uomo.util.tests/build.properties
@@ -1,4 +1,4 @@
-source.. = src/
-output.. = target/classes
-bin.includes = META-INF/,\
-               .
+source.. = src/

+output.. = target/classes

+bin.includes = META-INF/,\

+               .

diff --git a/bundles/org.eclipse.uomo.util.tests/src/org/eclipse/uomo/util/test/Iso8601DateUtilityTests.java b/bundles/org.eclipse.uomo.util.tests/src/org/eclipse/uomo/util/test/Iso8601DateUtilityTests.java
index 7568053..1bb8f3e 100644
--- a/bundles/org.eclipse.uomo.util.tests/src/org/eclipse/uomo/util/test/Iso8601DateUtilityTests.java
+++ b/bundles/org.eclipse.uomo.util.tests/src/org/eclipse/uomo/util/test/Iso8601DateUtilityTests.java
@@ -1,38 +1,38 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Jiva Medical - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.util.test;
-
-import junit.framework.TestCase;
-
-import org.eclipse.uomo.util.impl.Iso8601Date;
-import org.junit.Test;
-
-public class Iso8601DateUtilityTests extends TestCase {
-   
-	private Iso8601Date du;
-	
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		du = new Iso8601Date();
-	}
-	
-	@Test
-	public void testFullDate() {
-		String st;
-		st = du.parse("20071017111114.789", Iso8601Date.ISO_DATE_VALIDATION_FULL, Iso8601Date.OPTIONAL);
-		assertTrue(st, st == null);
-		st = du.parse("20061027000000.0020", Iso8601Date.ISO_DATE_VALIDATION_FULL, Iso8601Date.OPTIONAL);
-		assertTrue(st, st == null);
-	}
-
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Jiva Medical - initial API and implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.util.test;

+

+import junit.framework.TestCase;

+

+import org.eclipse.uomo.util.impl.Iso8601Date;

+import org.junit.Test;

+

+public class Iso8601DateUtilityTests extends TestCase {

+   

+	private Iso8601Date du;

+	

+	@Override

+	protected void setUp() throws Exception {

+		super.setUp();

+		du = new Iso8601Date();

+	}

+	

+	@Test

+	public void testFullDate() {

+		String st;

+		st = du.parse("20071017111114.789", Iso8601Date.ISO_DATE_VALIDATION_FULL, Iso8601Date.OPTIONAL);

+		assertTrue(st, st == null);

+		st = du.parse("20061027000000.0020", Iso8601Date.ISO_DATE_VALIDATION_FULL, Iso8601Date.OPTIONAL);

+		assertTrue(st, st == null);

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.util.tests/src/org/eclipse/uomo/util/test/numbers/RomanNumberDemos.java b/bundles/org.eclipse.uomo.util.tests/src/org/eclipse/uomo/util/test/numbers/RomanNumberDemos.java
index 0e9bad8..97bfa39 100644
--- a/bundles/org.eclipse.uomo.util.tests/src/org/eclipse/uomo/util/test/numbers/RomanNumberDemos.java
+++ b/bundles/org.eclipse.uomo.util.tests/src/org/eclipse/uomo/util/test/numbers/RomanNumberDemos.java
@@ -1,32 +1,32 @@
-/**
- * Copyright (c) 1996, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.util.test.numbers;
-
-import org.eclipse.uomo.util.numbers.ISpeller;
-import org.eclipse.uomo.util.numbers.impl.RomanNumberSpeller;
-
-public class RomanNumberDemos {
-
-	public static void main(String args[]) throws Exception {
-		System.out.println("Display massage number to Text!");
-		final ISpeller num = RomanNumberSpeller.of();
-		System.out.println("Spelling: " + num.spell(10) + ".");
-		System.out.println("Spelling: " + num.spell(15) + ".");
-		System.out.println("Spelling: " + num.spell(50) + ".");
-		System.out.println("Spelling: " + num.spell(99) + ".");
-		System.out.println("Spelling: " + num.spell(150) + ".");
-		System.out.println("Spelling: " + num.spell(234) + ".");
-		System.out.println("Spelling: " + num.spell(250) + ".");
-		System.out.println("Spelling: " + num.spell(2500) + ".");
-		System.out.println("Spelling: " + num.spell(3900) + ".");
-		// System.out.println("Spelling: " + num.spell(4000) + ".");
-	}
+/**

+ * Copyright (c) 1996, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.util.test.numbers;

+

+import org.eclipse.uomo.util.numbers.ISpeller;

+import org.eclipse.uomo.util.numbers.impl.RomanNumberSpeller;

+

+public class RomanNumberDemos {

+

+	public static void main(String args[]) throws Exception {

+		System.out.println("Display massage number to Text!");

+		final ISpeller num = RomanNumberSpeller.of();

+		System.out.println("Spelling: " + num.spell(10) + ".");

+		System.out.println("Spelling: " + num.spell(15) + ".");

+		System.out.println("Spelling: " + num.spell(50) + ".");

+		System.out.println("Spelling: " + num.spell(99) + ".");

+		System.out.println("Spelling: " + num.spell(150) + ".");

+		System.out.println("Spelling: " + num.spell(234) + ".");

+		System.out.println("Spelling: " + num.spell(250) + ".");

+		System.out.println("Spelling: " + num.spell(2500) + ".");

+		System.out.println("Spelling: " + num.spell(3900) + ".");

+		// System.out.println("Spelling: " + num.spell(4000) + ".");

+	}

 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.util/.gitignore b/bundles/org.eclipse.uomo.util/.gitignore
index 2c36b17..21d5518 100644
--- a/bundles/org.eclipse.uomo.util/.gitignore
+++ b/bundles/org.eclipse.uomo.util/.gitignore
@@ -1,2 +1,2 @@
-/target
-/.settings
+/target

+/.settings

diff --git a/bundles/org.eclipse.uomo.util/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.util/META-INF/MANIFEST.MF
index 7d9e29a..2f4298e 100644
--- a/bundles/org.eclipse.uomo.util/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.util/META-INF/MANIFEST.MF
@@ -1,17 +1,17 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UOMo Utilities
-Bundle-SymbolicName: org.eclipse.uomo.util;singleton:=true
-Bundle-Version: 0.7.0.qualifier
-Bundle-Activator: org.eclipse.uomo.util.internal.UtilitiesPlugin
-Bundle-Vendor: Eclipse.org
-Export-Package: org.eclipse.uomo.util,
- org.eclipse.uomo.util.impl,
- org.eclipse.uomo.util.numbers
-Require-Bundle: org.eclipse.uomo.core;bundle-version="0.2.0",
- org.eclipse.core.runtime;bundle-version="3.6.0",
- org.apache.commons.lang;bundle-version="2.3.0",
- org.junit;bundle-version="4.8.2"
-Import-Package: org.eclipse.uomo.util
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UOMo Utilities

+Bundle-SymbolicName: org.eclipse.uomo.util;singleton:=true

+Bundle-Version: 0.7.0.qualifier

+Bundle-Activator: org.eclipse.uomo.util.internal.UtilitiesPlugin

+Bundle-Vendor: Eclipse.org

+Export-Package: org.eclipse.uomo.util,

+ org.eclipse.uomo.util.impl,

+ org.eclipse.uomo.util.numbers

+Require-Bundle: org.eclipse.uomo.core;bundle-version="0.2.0",

+ org.eclipse.core.runtime;bundle-version="3.6.0",

+ org.apache.commons.lang;bundle-version="2.3.0",

+ org.junit;bundle-version="4.8.2"

+Import-Package: org.eclipse.uomo.util

+Bundle-ActivationPolicy: lazy

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

diff --git a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/Dictionary.java b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/Dictionary.java
index 675493b..3edec8d 100644
--- a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/Dictionary.java
+++ b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/Dictionary.java
@@ -1,36 +1,36 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.util;
-
-/**
- * @author Werner Keil
- * OSGi demo.
- * 
- * @deprecated change this into something more useful for UOM, e.g. Conversion
- */
-public interface Dictionary {
-	
-    /**
-     * Returns the language of the dictionary
-     *
-     * @return the language of the dictionary
-     */
-    public String getLanguage();
-	
-    /**
-     * Check for the existence of a word in the dictionary
-     * 
-     * @param word the word to be checked.
-     * @return true if the word is in the dictionary
-     */
-    public boolean check(String word);
-
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.util;

+

+/**

+ * @author Werner Keil

+ * OSGi demo.

+ * 

+ * @deprecated change this into something more useful for UOM, e.g. Conversion

+ */

+public interface Dictionary {

+	

+    /**

+     * Returns the language of the dictionary

+     *

+     * @return the language of the dictionary

+     */

+    public String getLanguage();

+	

+    /**

+     * Check for the existence of a word in the dictionary

+     * 

+     * @param word the word to be checked.

+     * @return true if the word is in the dictionary

+     */

+    public boolean check(String word);

+

+}

diff --git a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/DictionaryService.java b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/DictionaryService.java
index d7165b0..9519972 100644
--- a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/DictionaryService.java
+++ b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/DictionaryService.java
@@ -1,43 +1,43 @@
-/**
- * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.util;
-
-/**
- * @author Werner Keil
- * OSGi demo.
- * 
- * @deprecated change this into something more useful for UOM, e.g. ConversionService
- */
-public interface DictionaryService {
-	
-    /**
-     * Register a dictionary
-     * 
-     * @param dictionary the dictionary to be added.
-     */
-    public void registerDictionary(Dictionary dictionary);
-    
-    /**
-     * Remove a dictionary
-     * 
-     * @param dictionary the dictionary to be removed.
-     */
-    public void unregisterDictionary(Dictionary dictionary);
-	
-    /**
-     * Check for the existence of a word across all dictionaries
-     * 
-     * @param word the word to be checked.
-     * @return true if the word is in any dictionary
-     */
-    public boolean check(String word);
-
-}
+/**

+ * Copyright (c) 2005, 2010, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.util;

+

+/**

+ * @author Werner Keil

+ * OSGi demo.

+ * 

+ * @deprecated change this into something more useful for UOM, e.g. ConversionService

+ */

+public interface DictionaryService {

+	

+    /**

+     * Register a dictionary

+     * 

+     * @param dictionary the dictionary to be added.

+     */

+    public void registerDictionary(Dictionary dictionary);

+    

+    /**

+     * Remove a dictionary

+     * 

+     * @param dictionary the dictionary to be removed.

+     */

+    public void unregisterDictionary(Dictionary dictionary);

+	

+    /**

+     * Check for the existence of a word across all dictionaries

+     * 

+     * @param word the word to be checked.

+     * @return true if the word is in any dictionary

+     */

+    public boolean check(String word);

+

+}

diff --git a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/Registry.java b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/Registry.java
index b505f26..8f8a529 100644
--- a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/Registry.java
+++ b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/Registry.java
@@ -1,22 +1,22 @@
-/**
- * Copyright (c) 2011, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.util;
-
-/**
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * 
- * @param <V> the type of mapped values
- */
-public interface Registry<V> {
-	public boolean exists(String key);
-
-	public V get(String key);	
-}
+/**

+ * Copyright (c) 2011, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.util;

+

+/**

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * 

+ * @param <V> the type of mapped values

+ */

+public interface Registry<V> {

+	public boolean exists(String key);

+

+	public V get(String key);	

+}

diff --git a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/impl/DictionaryImpl.java b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/impl/DictionaryImpl.java
index 2ab994e..488b2cf 100644
--- a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/impl/DictionaryImpl.java
+++ b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/impl/DictionaryImpl.java
@@ -1,37 +1,37 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil and others - initial API and implementation
- */
-package org.eclipse.uomo.util.impl;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.uomo.util.Dictionary;
-
-@SuppressWarnings("deprecation")
-public class DictionaryImpl implements Dictionary {
-
-	private List<String> fWords = new ArrayList<String>(
-			Arrays.asList(new String[] { "osgi", "eclipse", "ucum" }));
-	private String fLanguage = "English";
-
-	public String getLanguage() {
-		return fLanguage;
-	}
-
-	public boolean check(String word) {
-		return fWords.contains(word);
-	}
-
-	public String toString() {
-		return fLanguage;
-	}
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil and others - initial API and implementation

+ */

+package org.eclipse.uomo.util.impl;

+

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.List;

+

+import org.eclipse.uomo.util.Dictionary;

+

+@SuppressWarnings("deprecation")

+public class DictionaryImpl implements Dictionary {

+

+	private List<String> fWords = new ArrayList<String>(

+			Arrays.asList(new String[] { "osgi", "eclipse", "ucum" }));

+	private String fLanguage = "English";

+

+	public String getLanguage() {

+		return fLanguage;

+	}

+

+	public boolean check(String word) {

+		return fWords.contains(word);

+	}

+

+	public String toString() {

+		return fLanguage;

+	}

+}

diff --git a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/impl/DictionaryServiceImpl.java b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/impl/DictionaryServiceImpl.java
index f44dd24..0d24990 100644
--- a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/impl/DictionaryServiceImpl.java
+++ b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/impl/DictionaryServiceImpl.java
@@ -1,40 +1,40 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil and others - initial API and implementation
- */
-package org.eclipse.uomo.util.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.uomo.util.Dictionary;
-import org.eclipse.uomo.util.DictionaryService;
-
-public class DictionaryServiceImpl implements DictionaryService {
-
-	private final List<Dictionary> fDictionaries = new ArrayList<Dictionary>();
-
-	public void registerDictionary(Dictionary dictionary) {
-		fDictionaries.add(dictionary);
-	}
-
-	public void unregisterDictionary(Dictionary dictionary) {
-		fDictionaries.remove(dictionary);
-	}
-
-	public boolean check(String word) {
-		for (int i = 0; i < fDictionaries.size(); i++) {
-			Dictionary dictionary = (Dictionary) fDictionaries.get(i);
-			if (dictionary.check(word))
-				return true;
-		}
-		return false;
-	}
-
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil and others - initial API and implementation

+ */

+package org.eclipse.uomo.util.impl;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.uomo.util.Dictionary;

+import org.eclipse.uomo.util.DictionaryService;

+

+public class DictionaryServiceImpl implements DictionaryService {

+

+	private final List<Dictionary> fDictionaries = new ArrayList<Dictionary>();

+

+	public void registerDictionary(Dictionary dictionary) {

+		fDictionaries.add(dictionary);

+	}

+

+	public void unregisterDictionary(Dictionary dictionary) {

+		fDictionaries.remove(dictionary);

+	}

+

+	public boolean check(String word) {

+		for (int i = 0; i < fDictionaries.size(); i++) {

+			Dictionary dictionary = (Dictionary) fDictionaries.get(i);

+			if (dictionary.check(word))

+				return true;

+		}

+		return false;

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/RealFormatOptions.java b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/RealFormatOptions.java
index cd31ece..04f1a7c 100644
--- a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/RealFormatOptions.java
+++ b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/RealFormatOptions.java
@@ -1,71 +1,71 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Grahame Grieve - initial API and implementation
- */
-package org.eclipse.uomo.util.numbers;
-
-final class RealFormatOptions extends DecimalFormatOptions {
-	
-	/**
-	 * null - exponent form is allowed
-	 * false - exponent form is not allowed
-	 * true - exponent form is required
-	 * 
-	 * FIXME change this to a more descriptive enum
-	 */
-	private Boolean exponent;
-	private boolean allowSpecial;
-	
-	/**
-	 * @param exponent
-	 * @param totalDigits
-	 * @param fractionDigits
-	 */
-	public RealFormatOptions(Boolean exponent, boolean allowSpecial, int totalDigits, int fractionDigits) {
-		super();
-		this.exponent = exponent;
-		this.totalDigits = totalDigits;
-		this.fractionDigits = fractionDigits;
-		this.allowSpecial = allowSpecial;
-	}
-
-	/**
-	 * @return the exponent
-	 */
-	public Boolean getExponent() {
-		return exponent;
-	}
-
-	/**
-	 * @param exponent the exponent to set
-	 */
-	public void setExponent(Boolean exponent) {
-		this.exponent = exponent;
-	}
-
-	/**
-	 * @return the allowSpecial
-	 */
-	public boolean isAllowSpecial() {
-		return allowSpecial;
-	}
-
-	/**
-	 * @param allowSpecial the allowSpecial to set
-	 */
-	public void setAllowSpecial(boolean allowSpecial) {
-		this.allowSpecial = allowSpecial;
-	}
-
-	public static RealFormatOptions allowComplex() {
-		return new RealFormatOptions(null, true, ANY_DIGITS, ANY_DIGITS);
-	}
-	
-	
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Grahame Grieve - initial API and implementation

+ */

+package org.eclipse.uomo.util.numbers;

+

+final class RealFormatOptions extends DecimalFormatOptions {

+	

+	/**

+	 * null - exponent form is allowed

+	 * false - exponent form is not allowed

+	 * true - exponent form is required

+	 * 

+	 * FIXME change this to a more descriptive enum

+	 */

+	private Boolean exponent;

+	private boolean allowSpecial;

+	

+	/**

+	 * @param exponent

+	 * @param totalDigits

+	 * @param fractionDigits

+	 */

+	public RealFormatOptions(Boolean exponent, boolean allowSpecial, int totalDigits, int fractionDigits) {

+		super();

+		this.exponent = exponent;

+		this.totalDigits = totalDigits;

+		this.fractionDigits = fractionDigits;

+		this.allowSpecial = allowSpecial;

+	}

+

+	/**

+	 * @return the exponent

+	 */

+	public Boolean getExponent() {

+		return exponent;

+	}

+

+	/**

+	 * @param exponent the exponent to set

+	 */

+	public void setExponent(Boolean exponent) {

+		this.exponent = exponent;

+	}

+

+	/**

+	 * @return the allowSpecial

+	 */

+	public boolean isAllowSpecial() {

+		return allowSpecial;

+	}

+

+	/**

+	 * @param allowSpecial the allowSpecial to set

+	 */

+	public void setAllowSpecial(boolean allowSpecial) {

+		this.allowSpecial = allowSpecial;

+	}

+

+	public static RealFormatOptions allowComplex() {

+		return new RealFormatOptions(null, true, ANY_DIGITS, ANY_DIGITS);

+	}

+	

+	

 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/SpellService.java b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/SpellService.java
index c5de471..fc3b8df 100644
--- a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/SpellService.java
+++ b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/SpellService.java
@@ -1,37 +1,37 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API
- */
-package org.eclipse.uomo.util.numbers;
-
-/**
- * SpellService is main engine for number spelling, text parsing and encoding
- * and validating.
- * 
- * @author Werner Keil
- * @version 1.1
- */
-public interface SpellService {
-
-	/**
-	 * Register a speller
-	 * 
-	 * @param speller
-	 *            the speller to be added.
-	 */
-	public void registerSpeller(ISpeller speller);
-
-	/**
-	 * Remove a speller
-	 * 
-	 * @param speller
-	 *            the speller to be removed.
-	 */
-	public void unregisterSpeller(ISpeller dictionary);
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API

+ */

+package org.eclipse.uomo.util.numbers;

+

+/**

+ * SpellService is main engine for number spelling, text parsing and encoding

+ * and validating.

+ * 

+ * @author Werner Keil

+ * @version 1.1

+ */

+public interface SpellService {

+

+	/**

+	 * Register a speller

+	 * 

+	 * @param speller

+	 *            the speller to be added.

+	 */

+	public void registerSpeller(ISpeller speller);

+

+	/**

+	 * Remove a speller

+	 * 

+	 * @param speller

+	 *            the speller to be removed.

+	 */

+	public void unregisterSpeller(ISpeller dictionary);

+}

diff --git a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/impl/SpellServiceImpl.java b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/impl/SpellServiceImpl.java
index 8e4227c..a8f97b1 100644
--- a/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/impl/SpellServiceImpl.java
+++ b/bundles/org.eclipse.uomo.util/src/main/java/org/eclipse/uomo/util/numbers/impl/SpellServiceImpl.java
@@ -1,33 +1,33 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.util.numbers.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.uomo.util.numbers.ISpeller;
-import org.eclipse.uomo.util.numbers.SpellService;
-
-public class SpellServiceImpl implements SpellService {
-
-	private final List<ISpeller> spellers = new ArrayList<ISpeller>();
-
-	@Override
-	public void registerSpeller(ISpeller speller) {
-		spellers.add(speller);
-	}
-
-	@Override
-	public void unregisterSpeller(ISpeller speller) {
-		spellers.remove(speller);
-	}
-
-}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.util.numbers.impl;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.uomo.util.numbers.ISpeller;

+import org.eclipse.uomo.util.numbers.SpellService;

+

+public class SpellServiceImpl implements SpellService {

+

+	private final List<ISpeller> spellers = new ArrayList<ISpeller>();

+

+	@Override

+	public void registerSpeller(ISpeller speller) {

+		spellers.add(speller);

+	}

+

+	@Override

+	public void unregisterSpeller(ISpeller speller) {

+		spellers.remove(speller);

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.xml.tests/.classpath b/bundles/org.eclipse.uomo.xml.tests/.classpath
index 0b1bcf9..9bc33d3 100644
--- a/bundles/org.eclipse.uomo.xml.tests/.classpath
+++ b/bundles/org.eclipse.uomo.xml.tests/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.xml.tests/.gitignore b/bundles/org.eclipse.uomo.xml.tests/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/bundles/org.eclipse.uomo.xml.tests/.gitignore
+++ b/bundles/org.eclipse.uomo.xml.tests/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/bundles/org.eclipse.uomo.xml.tests/.project b/bundles/org.eclipse.uomo.xml.tests/.project
index 1d1e8fe..3d8fa9a 100644
--- a/bundles/org.eclipse.uomo.xml.tests/.project
+++ b/bundles/org.eclipse.uomo.xml.tests/.project
@@ -1,34 +1,34 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.util.tests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.util.tests</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/org.eclipse.uomo.xml.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.xml.tests/META-INF/MANIFEST.MF
index b4a6d87..bb287f3 100644
--- a/bundles/org.eclipse.uomo.xml.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.xml.tests/META-INF/MANIFEST.MF
@@ -1,11 +1,11 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UOMo XML Tests
-Bundle-SymbolicName: org.eclipse.uomo.xml.tests
-Bundle-Version: 0.7.0.qualifier
-Bundle-Vendor: Eclipse.org
-Fragment-Host: org.eclipse.uomo.util;bundle-version="0.7.0"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.uomo.xml.test
-Require-Bundle: org.junit;bundle-version="4.8.2",
- org.eclipse.uomo.xml;bundle-version="0.7.0"
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UOMo XML Tests

+Bundle-SymbolicName: org.eclipse.uomo.xml.tests

+Bundle-Version: 0.7.0.qualifier

+Bundle-Vendor: Eclipse.org

+Fragment-Host: org.eclipse.uomo.util;bundle-version="0.7.0"

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Export-Package: org.eclipse.uomo.xml.test

+Require-Bundle: org.junit;bundle-version="4.8.2",

+ org.eclipse.uomo.xml;bundle-version="0.7.0"

diff --git a/bundles/org.eclipse.uomo.xml.tests/build.properties b/bundles/org.eclipse.uomo.xml.tests/build.properties
index ced5f40..c4e35e4 100644
--- a/bundles/org.eclipse.uomo.xml.tests/build.properties
+++ b/bundles/org.eclipse.uomo.xml.tests/build.properties
@@ -1,4 +1,4 @@
-source.. = src/
-output.. = target/classes
-bin.includes = META-INF/,\
-               .
+source.. = src/

+output.. = target/classes

+bin.includes = META-INF/,\

+               .

diff --git a/bundles/org.eclipse.uomo.xml/.classpath b/bundles/org.eclipse.uomo.xml/.classpath
index 5aff1fe..17054ca 100644
--- a/bundles/org.eclipse.uomo.xml/.classpath
+++ b/bundles/org.eclipse.uomo.xml/.classpath
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry exported="true" kind="lib" path="libs/xmlpull_1_1_3_4b.jar"/>
-	<classpathentry exported="true" kind="lib" path="libs/xpp3_min-1.1.3.4.O.jar"/>
-	<classpathentry kind="src" path="src/main/java/"/>
-	<classpathentry kind="src" path="src/main/resources/"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry exported="true" kind="lib" path="libs/xmlpull_1_1_3_4b.jar"/>

+	<classpathentry exported="true" kind="lib" path="libs/xpp3_min-1.1.3.4.O.jar"/>

+	<classpathentry kind="src" path="src/main/java/"/>

+	<classpathentry kind="src" path="src/main/resources/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/org.eclipse.uomo.xml/.gitignore b/bundles/org.eclipse.uomo.xml/.gitignore
index e7da900..1a315ce 100644
--- a/bundles/org.eclipse.uomo.xml/.gitignore
+++ b/bundles/org.eclipse.uomo.xml/.gitignore
@@ -1,3 +1,3 @@
-/target
-/.settings
-/target
+/target

+/.settings

+/target

diff --git a/bundles/org.eclipse.uomo.xml/.springBeans b/bundles/org.eclipse.uomo.xml/.springBeans
index 6c6cb5a..ef666ef 100644
--- a/bundles/org.eclipse.uomo.xml/.springBeans
+++ b/bundles/org.eclipse.uomo.xml/.springBeans
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.5.0.201010221000-RELEASE]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<beansProjectDescription>

+	<version>1</version>

+	<pluginVersion><![CDATA[2.5.0.201010221000-RELEASE]]></pluginVersion>

+	<configSuffixes>

+		<configSuffix><![CDATA[xml]]></configSuffix>

+	</configSuffixes>

+	<enableImports><![CDATA[false]]></enableImports>

+	<configs>

+	</configs>

+	<configSets>

+	</configSets>

+</beansProjectDescription>

diff --git a/bundles/org.eclipse.uomo.xml/META-INF/MANIFEST.MF b/bundles/org.eclipse.uomo.xml/META-INF/MANIFEST.MF
index 8b477ac..737eb76 100644
--- a/bundles/org.eclipse.uomo.xml/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.uomo.xml/META-INF/MANIFEST.MF
@@ -1,24 +1,24 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UOMo XML
-Bundle-SymbolicName: org.eclipse.uomo.xml
-Bundle-Version: 0.7.0.qualifier
-Require-Bundle: org.eclipse.uomo.core;bundle-version="0.7.0",
- org.apache.commons.lang;bundle-version="2.6.0",
- org.apache.xerces,
- org.junit;bundle-version="4.8.2"
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Bundle-ClassPath: libs/xmlpull_1_1_3_4b.jar, libs/xpp3_min-1.1.3.4.O.jar,
- .
-Export-Package: org.eclipse.uomo.xml,
- org.eclipse.uomo.xml.impl;
-  uses:="org.apache.xerces.parsers,
-   org.xmlpull.v1,
-   org.apache.xerces.xni,
-   org.eclipse.uomo.xml,
-   org.xml.sax.helpers,
-   org.w3c.dom,
-   org.xml.sax",
- org.xmlpull.mxp1,
- org.xmlpull.v1
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UOMo XML

+Bundle-SymbolicName: org.eclipse.uomo.xml

+Bundle-Version: 0.7.0.qualifier

+Require-Bundle: org.eclipse.uomo.core;bundle-version="0.7.0",

+ org.apache.commons.lang;bundle-version="2.6.0",

+ org.apache.xerces,

+ org.junit;bundle-version="4.8.2"

+Bundle-Vendor: Eclipse.org

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Bundle-ClassPath: libs/xmlpull_1_1_3_4b.jar, libs/xpp3_min-1.1.3.4.O.jar,

+ .

+Export-Package: org.eclipse.uomo.xml,

+ org.eclipse.uomo.xml.impl;

+  uses:="org.apache.xerces.parsers,

+   org.xmlpull.v1,

+   org.apache.xerces.xni,

+   org.eclipse.uomo.xml,

+   org.xml.sax.helpers,

+   org.w3c.dom,

+   org.xml.sax",

+ org.xmlpull.mxp1,

+ org.xmlpull.v1

diff --git a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/XMLMessages.java b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/XMLMessages.java
index c58f2fd..c860fc5 100644
--- a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/XMLMessages.java
+++ b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/XMLMessages.java
@@ -1,15 +1,15 @@
-package org.eclipse.uomo.xml;
-
-import org.eclipse.osgi.util.NLS;
-
-public final class XMLMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.uomo.xml.messages"; //$NON-NLS-1$
-	public static String XMLObjectParsers_stackUnderflow;
-	static {
-		// initialize resource bundle
-		NLS.initializeMessages(BUNDLE_NAME, XMLMessages.class);
-	}
-
-	private XMLMessages() {
-	}
-}
+package org.eclipse.uomo.xml;

+

+import org.eclipse.osgi.util.NLS;

+

+public final class XMLMessages extends NLS {

+	private static final String BUNDLE_NAME = "org.eclipse.uomo.xml.messages"; //$NON-NLS-1$

+	public static String XMLObjectParsers_stackUnderflow;

+	static {

+		// initialize resource bundle

+		NLS.initializeMessages(BUNDLE_NAME, XMLMessages.class);

+	}

+

+	private XMLMessages() {

+	}

+}

diff --git a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/DOMXMLWriter.java b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/DOMXMLWriter.java
index c01bec4..d89ef4f 100644
--- a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/DOMXMLWriter.java
+++ b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/DOMXMLWriter.java
@@ -1,527 +1,527 @@
-/*******************************************************************************
- * Crown Copyright (c) 2009, 2009, Copyright (c) 2009, 2009 Kestral Computing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Kestral Computing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.uomo.xml.impl;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Stack;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.eclipse.uomo.xml.DOMUtil;
-import org.eclipse.uomo.xml.IXMLWriter;
-import org.eclipse.uomo.xml.XMLUtil;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * A DOM-base XML writer
- * 
- * @author dennisn
- *
- */
-public class DOMXMLWriter implements IXMLWriter {
-	
-	/**
-	 * The internal document
-	 */
-	private Document doc = null;
-	
-	private boolean isPretty = true;
-	
-	// the current stack of element
-	private Stack<Node> current = new Stack<Node>();
-	
-	// defined attributes for the new coming element
-	private Map attributes = new HashMap();
-	
-	// the defined namespace for the new coming element
-	private Map definedNS = new HashMap();
-	
-	private DocumentFragment commentBlock = null;
-	
-	public DOMXMLWriter() throws ParserConfigurationException {
-		DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
-		builderFactory.setNamespaceAware(true);
-		DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
-		doc = docBuilder.newDocument();
-	}
-	
-	public DOMXMLWriter(Document doc) {
-		this.doc = doc;
-	}
-	
-	/**
-	 * @return the internal document
-	 * NOTE: be careful when changing the internal document, as it may
-	 * cause error for the writer
-	 */
-	public Document getDOMDocument() {
-		return doc;
-	}
-	
-	public Element getCurrentElement() {
-		return (Element) current.peek();
-	}
-	
-	protected boolean condition(boolean bTest, String message) throws IOException {
-		if (!bTest)
-			throw new IOException(message);
-		return bTest;
-	}
-	
-	private void addAttribute(String name, String value) throws IOException {
-		addAttribute(name, value, false);
-	}
-
-	private void addAttribute(String name, String value, boolean isNoLines) throws IOException {
-		if (!XMLUtil.isNMToken(name))
-			throw new IOException("XML name "+name+" is not valid");
-
-		condition(!attributes.containsKey(name), "attempt to define attribute with name "+name+" more than once");
-		attributes.put(name, XMLUtil.escapeXML(value, null, isNoLines));
-	}
-	
-	private void defineNamespace(String namespace, String prefix) {
-		if (namespace != null) {
-			if (prefix == null)
-				prefix = "";
-			
-			definedNS.put(prefix, namespace);
-		}
-	}
-	
-	private String getPrefixForNamespace(String namespace) throws IOException {
-		if ("http://www.w3.org/XML/1998/namespace".equals(namespace))
-			return "xml:";
-
-		String prefix = null;
-		if (definedNS.containsValue(namespace)) {
-			Iterator iter = definedNS.keySet().iterator();
-			while (prefix == null && iter.hasNext()) {
-				Object k = iter.next();
-				if (definedNS.get(k).equals(namespace))
-					prefix = k.toString();
-			}
-		}
-		else if (current.size() > 0)
-			prefix = DOMUtil.lookupPrefixForNamespace((Element) current.peek(), namespace);
-		
-		if (prefix == null)
-			throw new IOException("Namespace "+namespace+" is not defined");
-		return prefix + ":";
-	}
-	
-	private String getNamespaceForPrefix(String prefix) throws IOException {
-		if ("xml".equals(prefix))
-			return "http://www.w3.org/XML/1998/namespace";
-
-		String result = null;
-		if (definedNS.containsKey(prefix))
-			result = definedNS.get(prefix).toString();
-		else if (current.size() > 0)
-			prefix = DOMUtil.lookupNamespaceForPrefix((Element) current.peek(), prefix);
-		return result == null ? "" : result;
-	}
-	
-	private void checkInElement() throws IOException {
-		condition(current != null && current.size() > 0, "Not in an element");
-	}
-
-	// IXMLWriter methods
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#abbreviationDefined(java.lang.String)
-	 */
-	public boolean abbreviationDefined(String abbreviation) {
-		return definedNS.containsKey(abbreviation) 
-			|| (current.size() > 0 && DOMUtil.lookupNamespaceForPrefix(getCurrentElement(), abbreviation) != null);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, java.lang.String, boolean)
-	 */
-	public void attribute(String namespace, String name, String value, boolean onlyIfNotEmpty) throws IOException {
-		if (!onlyIfNotEmpty || value != null && !value.equals(""))
-			attribute(namespace, name, value);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public void attribute(String namespace, String name, String value) throws IOException {
-		if (namespace == null || namespace.equals("")) 
-			addAttribute(name, value);
-		else
-			addAttribute(getPrefixForNamespace(namespace)+name, value);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, boolean)
-	 */
-	public void attribute(String name, String value, boolean onlyIfNotEmpty) throws IOException {
-		if (!onlyIfNotEmpty || value != null && !value.equals(""))
-			attribute(name, value);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String)
-	 */
-	public void attribute(String name, String value) throws IOException {
-		addAttribute(name, value);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attributeNoLines(java.lang.String, java.lang.String)
-	 */
-	public void attributeNoLines(String name, String value) throws IOException {
-		addAttribute(name, value, true);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#cData(java.lang.String)
-	 */
-	public void cData(String text) throws IOException {
-		checkInElement();
-		getCurrentElement().appendChild(doc.createCDATASection(text));
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close(java.lang.String)
-	 */
-	public void close(String name) throws IOException {
-		if (current.size() == 0)
-			throw new IOException("Unable to close null|"+name+", nothing to close");
-		if (!getCurrentElement().getNodeName().equals(name))
-			throw new IOException("Unable to close null|"+name+", found "+getCurrentElement().getNodeName());
-		close();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close(java.lang.String, java.lang.String)
-	 */
-	public void close(String namespace, String name) throws IOException {
-		if (current.size() == 0)
-			throw new IOException("Unable to close null|"+name+", nothing to close");
-		// assume current is DOM level 3
-		Element ele = getCurrentElement();
-		if (!namespace.equals(ele.getNamespaceURI()) || !name.equals(ele.getLocalName()))
-			throw new IOException("Unable to close "+namespace+"|"+name+", found "+ele.getNamespaceURI() +"|"+ele.getLocalName());
-		close();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close()
-	 */
-	public void close() throws IOException {
-		checkInElement();
-		current.pop();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#closeToLevel(int)
-	 */
-	public void closeToLevel(int count) throws IOException {
-		while (current.size() > count)
-			close();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#comment(java.lang.String, boolean)
-	 */
-	public void comment(String comment, boolean doPretty) throws IOException {
-		Comment c = doc.createComment(comment);
-		getCurrentElement().appendChild(c);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String, boolean)
-	 */
-	public void element(String namespace, String name, String content, boolean onlyIfNotEmpty) throws IOException {
-		if (!onlyIfNotEmpty || content != null && !content.equals(""))
-			element(namespace, name, content);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public void element(String namespace, String name, String content, String comment) throws IOException {
-		if (!XMLUtil.isNMToken(name))
-			throw new IOException("XML name "+name+" is not valid");
-		open(namespace, name, comment);
-		text(content);
-		close();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public void element(String namespace, String name, String content) throws IOException {
-		if (!XMLUtil.isNMToken(name))
-			throw new IOException("XML name "+name+" is not valid");
-		open(namespace, name);
-		text(content);
-		close();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, boolean)
-	 */
-	public void element(String name, String content, boolean onlyIfNotEmpty) throws IOException {
-		if (!onlyIfNotEmpty || content != null && !content.equals(""))
-			element(null, name, content);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String)
-	 */
-	public void element(String name, String content) throws IOException {
-		element(null, name, content);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#endCommentBlock()
-	 */
-	public void endCommentBlock() throws IOException {
-		if (commentBlock == null)
-			throw new IOException("Cannot close a comment block when none existed");
-		else if (getCurrentElement().getParentNode() != commentBlock)
-			throw new IOException("Cannot close a comment block when it's still opened");
-		
-		ByteArrayOutputStream temp = new ByteArrayOutputStream();
-		try {
-			// re-create the comment nodes
-			NodeList children = getCurrentElement().getChildNodes();
-			DocumentFragment frag = doc.createDocumentFragment();
-			for (int i = 0; i < children.getLength(); i++) 
-				frag.appendChild(children.item(i));
-			
-			// init DOM->String transformer
-			Transformer trans = TransformerFactory.newInstance().newTransformer();
-			trans.setOutputProperty(OutputKeys.STANDALONE, "no");
-			trans.setOutputProperty(OutputKeys.INDENT, "yes");
-			trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-
-			// convert from DOM to string comment
-			
-			trans.transform(new DOMSource(frag), new StreamResult(temp));
-		}
-		catch (Exception e) {
-			throw new IOException(e.getLocalizedMessage());
-		}
-		finally {
-			current.pop();
-			commentBlock = null;
-		}
-		comment(temp.toString(), true);
-	}
-
-//	/* (non-Javadoc)
-//	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#escapedText(java.lang.String)
-//	 */
-//	public void escapedText(String content) throws IOException {
-//		checkInElement();
-//		text(content);
-//	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#getDefaultNamespace()
-	 */
-	public String getDefaultNamespace() {
-		String result = null;
-		if (definedNS.size() > 0) {
-			try {
-				result = getNamespaceForPrefix("");
-			} catch (IOException e) {
-				// do nothing
-			}
-		}
-		
-		if (result == null && current.size() > 0)
-			result = DOMUtil.lookupNamespaceForPrefix(getCurrentElement(), "");
-		
-		return result == null ? "": result;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#isPretty()
-	 */
-	public boolean isPretty() throws IOException {
-		return isPretty;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespace(java.lang.String)
-	 */
-	public void namespace(String namespace) throws IOException {
-		if (!namespaceDefined(namespace)) {
-			int index = 0;
-			while (abbreviationDefined("ns"+Integer.toString(index))) 
-				index++;
-			defineNamespace(namespace, "ns"+Integer.toString(index));
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespace(java.lang.String, java.lang.String)
-	 */
-	public void namespace(String namespace, String prefix) throws IOException {
-		String ns = getNamespaceForPrefix(prefix);
-		if (ns == null || !ns.equals(namespace))
-			defineNamespace(namespace, prefix);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespaceDefined(java.lang.String)
-	 */
-	public boolean namespaceDefined(String namespace) {
-		try {
-			return getPrefixForNamespace(namespace) != null;
-		} catch (IOException e) {
-			return false;
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String, java.lang.String)
-	 */
-	public void open(String namespace, String name) throws IOException {
-		open(namespace, name, null);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public void open(String namespace, String name, String comment) throws IOException {
-		if (!XMLUtil.isNMToken(name))
-			throw new IOException("XML name "+name+" is not valid");
-		if (name == null)
-			throw new IOException("XML name is null");
-
-		Element ele;
-		if (namespace != null) {
-			name = getPrefixForNamespace(namespace) + name;
-			ele = doc.createElementNS(namespace, name);
-		}
-		else if (getDefaultNamespace().length() > 0)
-			ele = doc.createElementNS(getDefaultNamespace(), name);
-		else
-			ele = doc.createElement(name);
-		defineAttributes(ele);
-		defineNamespaces(ele);
-		if (current.size() == 0)
-			doc.appendChild(ele);
-		else
-			getCurrentElement().appendChild(ele);
-		current.push(ele);
-		if (comment != null) comment(comment, true);
-	}
-
-	private void defineNamespaces(Element ele) {
-		Iterator<?> iter = definedNS.keySet().iterator();
-		while (iter.hasNext()) {
-			Object k = iter.next();
-			ele.setAttribute("xmlns:" + k.toString(), definedNS.get(k).toString());
-		}
-		definedNS.clear();
-	}
-
-	private void defineAttributes(Element ele) {
-		Iterator<?> iter = attributes.keySet().iterator();
-		while (iter.hasNext()) {
-			Object k = iter.next();
-			ele.setAttribute(k.toString(), attributes.get(k).toString());
-		}
-		attributes.clear();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String)
-	 */
-	public void open(String name) throws IOException {
-		open(null, name);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#setDefaultNamespace(java.lang.String)
-	 */
-	public void setDefaultNamespace(String namespace) throws IOException {
-		if ((namespace == null && getDefaultNamespace() != null) ||
-				(namespace != null && !namespace.equals(getDefaultNamespace())))
-			defineNamespace(namespace, "");
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#setPretty(boolean)
-	 */
-	public void setPretty(boolean pretty) throws IOException {
-		this.isPretty = pretty;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#start()
-	 */
-	public void start() throws IOException {
-		// dont need to do anything
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#startCommentBlock()
-	 */
-	public void startCommentBlock() throws IOException {
-		if (commentBlock != null)
-			throw new IOException("Cannot nest comments");
-		/* we start a comment block by create a document fragment with 1 element root: commentRoot
-		 * Further node will be add to be children of this element root.
-		 */
-		commentBlock = doc.createDocumentFragment();
-		Node node = doc.createElement("commentRoot");
-		commentBlock.appendChild(node);
-		current.push(node);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#text(java.lang.String)
-	 */
-	public void text(String content) throws IOException {
-		text(content, false);
-	}
-	
-	public void text(String content, boolean dontEscape) throws IOException {
-		if (!dontEscape)
-			content = XMLUtil.escapeXML(content, null, false);
-		checkInElement();
-		Node node = doc.createTextNode(content);
-		getCurrentElement().appendChild(node);	
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#writeBytes(byte[])
-	 */
-	public void writeBytes(byte[] bytes) throws IOException {
-		text(new String(bytes));
-	}
-
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2009, 2009, Copyright (c) 2009, 2009 Kestral Computing.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Kestral Computing - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.uomo.xml.impl;

+

+import java.io.ByteArrayOutputStream;

+import java.io.IOException;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.Stack;

+

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.parsers.ParserConfigurationException;

+import javax.xml.transform.OutputKeys;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.stream.StreamResult;

+

+import org.eclipse.uomo.xml.DOMUtil;

+import org.eclipse.uomo.xml.IXMLWriter;

+import org.eclipse.uomo.xml.XMLUtil;

+import org.w3c.dom.Comment;

+import org.w3c.dom.Document;

+import org.w3c.dom.DocumentFragment;

+import org.w3c.dom.Element;

+import org.w3c.dom.Node;

+import org.w3c.dom.NodeList;

+

+/**

+ * A DOM-base XML writer

+ * 

+ * @author dennisn

+ *

+ */

+public class DOMXMLWriter implements IXMLWriter {

+	

+	/**

+	 * The internal document

+	 */

+	private Document doc = null;

+	

+	private boolean isPretty = true;

+	

+	// the current stack of element

+	private Stack<Node> current = new Stack<Node>();

+	

+	// defined attributes for the new coming element

+	private Map attributes = new HashMap();

+	

+	// the defined namespace for the new coming element

+	private Map definedNS = new HashMap();

+	

+	private DocumentFragment commentBlock = null;

+	

+	public DOMXMLWriter() throws ParserConfigurationException {

+		DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();

+		builderFactory.setNamespaceAware(true);

+		DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();

+		doc = docBuilder.newDocument();

+	}

+	

+	public DOMXMLWriter(Document doc) {

+		this.doc = doc;

+	}

+	

+	/**

+	 * @return the internal document

+	 * NOTE: be careful when changing the internal document, as it may

+	 * cause error for the writer

+	 */

+	public Document getDOMDocument() {

+		return doc;

+	}

+	

+	public Element getCurrentElement() {

+		return (Element) current.peek();

+	}

+	

+	protected boolean condition(boolean bTest, String message) throws IOException {

+		if (!bTest)

+			throw new IOException(message);

+		return bTest;

+	}

+	

+	private void addAttribute(String name, String value) throws IOException {

+		addAttribute(name, value, false);

+	}

+

+	private void addAttribute(String name, String value, boolean isNoLines) throws IOException {

+		if (!XMLUtil.isNMToken(name))

+			throw new IOException("XML name "+name+" is not valid");

+

+		condition(!attributes.containsKey(name), "attempt to define attribute with name "+name+" more than once");

+		attributes.put(name, XMLUtil.escapeXML(value, null, isNoLines));

+	}

+	

+	private void defineNamespace(String namespace, String prefix) {

+		if (namespace != null) {

+			if (prefix == null)

+				prefix = "";

+			

+			definedNS.put(prefix, namespace);

+		}

+	}

+	

+	private String getPrefixForNamespace(String namespace) throws IOException {

+		if ("http://www.w3.org/XML/1998/namespace".equals(namespace))

+			return "xml:";

+

+		String prefix = null;

+		if (definedNS.containsValue(namespace)) {

+			Iterator iter = definedNS.keySet().iterator();

+			while (prefix == null && iter.hasNext()) {

+				Object k = iter.next();

+				if (definedNS.get(k).equals(namespace))

+					prefix = k.toString();

+			}

+		}

+		else if (current.size() > 0)

+			prefix = DOMUtil.lookupPrefixForNamespace((Element) current.peek(), namespace);

+		

+		if (prefix == null)

+			throw new IOException("Namespace "+namespace+" is not defined");

+		return prefix + ":";

+	}

+	

+	private String getNamespaceForPrefix(String prefix) throws IOException {

+		if ("xml".equals(prefix))

+			return "http://www.w3.org/XML/1998/namespace";

+

+		String result = null;

+		if (definedNS.containsKey(prefix))

+			result = definedNS.get(prefix).toString();

+		else if (current.size() > 0)

+			prefix = DOMUtil.lookupNamespaceForPrefix((Element) current.peek(), prefix);

+		return result == null ? "" : result;

+	}

+	

+	private void checkInElement() throws IOException {

+		condition(current != null && current.size() > 0, "Not in an element");

+	}

+

+	// IXMLWriter methods

+	

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#abbreviationDefined(java.lang.String)

+	 */

+	public boolean abbreviationDefined(String abbreviation) {

+		return definedNS.containsKey(abbreviation) 

+			|| (current.size() > 0 && DOMUtil.lookupNamespaceForPrefix(getCurrentElement(), abbreviation) != null);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, java.lang.String, boolean)

+	 */

+	public void attribute(String namespace, String name, String value, boolean onlyIfNotEmpty) throws IOException {

+		if (!onlyIfNotEmpty || value != null && !value.equals(""))

+			attribute(namespace, name, value);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, java.lang.String)

+	 */

+	public void attribute(String namespace, String name, String value) throws IOException {

+		if (namespace == null || namespace.equals("")) 

+			addAttribute(name, value);

+		else

+			addAttribute(getPrefixForNamespace(namespace)+name, value);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, boolean)

+	 */

+	public void attribute(String name, String value, boolean onlyIfNotEmpty) throws IOException {

+		if (!onlyIfNotEmpty || value != null && !value.equals(""))

+			attribute(name, value);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String)

+	 */

+	public void attribute(String name, String value) throws IOException {

+		addAttribute(name, value);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attributeNoLines(java.lang.String, java.lang.String)

+	 */

+	public void attributeNoLines(String name, String value) throws IOException {

+		addAttribute(name, value, true);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#cData(java.lang.String)

+	 */

+	public void cData(String text) throws IOException {

+		checkInElement();

+		getCurrentElement().appendChild(doc.createCDATASection(text));

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close(java.lang.String)

+	 */

+	public void close(String name) throws IOException {

+		if (current.size() == 0)

+			throw new IOException("Unable to close null|"+name+", nothing to close");

+		if (!getCurrentElement().getNodeName().equals(name))

+			throw new IOException("Unable to close null|"+name+", found "+getCurrentElement().getNodeName());

+		close();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close(java.lang.String, java.lang.String)

+	 */

+	public void close(String namespace, String name) throws IOException {

+		if (current.size() == 0)

+			throw new IOException("Unable to close null|"+name+", nothing to close");

+		// assume current is DOM level 3

+		Element ele = getCurrentElement();

+		if (!namespace.equals(ele.getNamespaceURI()) || !name.equals(ele.getLocalName()))

+			throw new IOException("Unable to close "+namespace+"|"+name+", found "+ele.getNamespaceURI() +"|"+ele.getLocalName());

+		close();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close()

+	 */

+	public void close() throws IOException {

+		checkInElement();

+		current.pop();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#closeToLevel(int)

+	 */

+	public void closeToLevel(int count) throws IOException {

+		while (current.size() > count)

+			close();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#comment(java.lang.String, boolean)

+	 */

+	public void comment(String comment, boolean doPretty) throws IOException {

+		Comment c = doc.createComment(comment);

+		getCurrentElement().appendChild(c);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String, boolean)

+	 */

+	public void element(String namespace, String name, String content, boolean onlyIfNotEmpty) throws IOException {

+		if (!onlyIfNotEmpty || content != null && !content.equals(""))

+			element(namespace, name, content);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

+	 */

+	public void element(String namespace, String name, String content, String comment) throws IOException {

+		if (!XMLUtil.isNMToken(name))

+			throw new IOException("XML name "+name+" is not valid");

+		open(namespace, name, comment);

+		text(content);

+		close();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String)

+	 */

+	public void element(String namespace, String name, String content) throws IOException {

+		if (!XMLUtil.isNMToken(name))

+			throw new IOException("XML name "+name+" is not valid");

+		open(namespace, name);

+		text(content);

+		close();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, boolean)

+	 */

+	public void element(String name, String content, boolean onlyIfNotEmpty) throws IOException {

+		if (!onlyIfNotEmpty || content != null && !content.equals(""))

+			element(null, name, content);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String)

+	 */

+	public void element(String name, String content) throws IOException {

+		element(null, name, content);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#endCommentBlock()

+	 */

+	public void endCommentBlock() throws IOException {

+		if (commentBlock == null)

+			throw new IOException("Cannot close a comment block when none existed");

+		else if (getCurrentElement().getParentNode() != commentBlock)

+			throw new IOException("Cannot close a comment block when it's still opened");

+		

+		ByteArrayOutputStream temp = new ByteArrayOutputStream();

+		try {

+			// re-create the comment nodes

+			NodeList children = getCurrentElement().getChildNodes();

+			DocumentFragment frag = doc.createDocumentFragment();

+			for (int i = 0; i < children.getLength(); i++) 

+				frag.appendChild(children.item(i));

+			

+			// init DOM->String transformer

+			Transformer trans = TransformerFactory.newInstance().newTransformer();

+			trans.setOutputProperty(OutputKeys.STANDALONE, "no");

+			trans.setOutputProperty(OutputKeys.INDENT, "yes");

+			trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

+

+			// convert from DOM to string comment

+			

+			trans.transform(new DOMSource(frag), new StreamResult(temp));

+		}

+		catch (Exception e) {

+			throw new IOException(e.getLocalizedMessage());

+		}

+		finally {

+			current.pop();

+			commentBlock = null;

+		}

+		comment(temp.toString(), true);

+	}

+

+//	/* (non-Javadoc)

+//	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#escapedText(java.lang.String)

+//	 */

+//	public void escapedText(String content) throws IOException {

+//		checkInElement();

+//		text(content);

+//	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#getDefaultNamespace()

+	 */

+	public String getDefaultNamespace() {

+		String result = null;

+		if (definedNS.size() > 0) {

+			try {

+				result = getNamespaceForPrefix("");

+			} catch (IOException e) {

+				// do nothing

+			}

+		}

+		

+		if (result == null && current.size() > 0)

+			result = DOMUtil.lookupNamespaceForPrefix(getCurrentElement(), "");

+		

+		return result == null ? "": result;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#isPretty()

+	 */

+	public boolean isPretty() throws IOException {

+		return isPretty;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespace(java.lang.String)

+	 */

+	public void namespace(String namespace) throws IOException {

+		if (!namespaceDefined(namespace)) {

+			int index = 0;

+			while (abbreviationDefined("ns"+Integer.toString(index))) 

+				index++;

+			defineNamespace(namespace, "ns"+Integer.toString(index));

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespace(java.lang.String, java.lang.String)

+	 */

+	public void namespace(String namespace, String prefix) throws IOException {

+		String ns = getNamespaceForPrefix(prefix);

+		if (ns == null || !ns.equals(namespace))

+			defineNamespace(namespace, prefix);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespaceDefined(java.lang.String)

+	 */

+	public boolean namespaceDefined(String namespace) {

+		try {

+			return getPrefixForNamespace(namespace) != null;

+		} catch (IOException e) {

+			return false;

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String, java.lang.String)

+	 */

+	public void open(String namespace, String name) throws IOException {

+		open(namespace, name, null);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String, java.lang.String, java.lang.String)

+	 */

+	public void open(String namespace, String name, String comment) throws IOException {

+		if (!XMLUtil.isNMToken(name))

+			throw new IOException("XML name "+name+" is not valid");

+		if (name == null)

+			throw new IOException("XML name is null");

+

+		Element ele;

+		if (namespace != null) {

+			name = getPrefixForNamespace(namespace) + name;

+			ele = doc.createElementNS(namespace, name);

+		}

+		else if (getDefaultNamespace().length() > 0)

+			ele = doc.createElementNS(getDefaultNamespace(), name);

+		else

+			ele = doc.createElement(name);

+		defineAttributes(ele);

+		defineNamespaces(ele);

+		if (current.size() == 0)

+			doc.appendChild(ele);

+		else

+			getCurrentElement().appendChild(ele);

+		current.push(ele);

+		if (comment != null) comment(comment, true);

+	}

+

+	private void defineNamespaces(Element ele) {

+		Iterator<?> iter = definedNS.keySet().iterator();

+		while (iter.hasNext()) {

+			Object k = iter.next();

+			ele.setAttribute("xmlns:" + k.toString(), definedNS.get(k).toString());

+		}

+		definedNS.clear();

+	}

+

+	private void defineAttributes(Element ele) {

+		Iterator<?> iter = attributes.keySet().iterator();

+		while (iter.hasNext()) {

+			Object k = iter.next();

+			ele.setAttribute(k.toString(), attributes.get(k).toString());

+		}

+		attributes.clear();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String)

+	 */

+	public void open(String name) throws IOException {

+		open(null, name);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#setDefaultNamespace(java.lang.String)

+	 */

+	public void setDefaultNamespace(String namespace) throws IOException {

+		if ((namespace == null && getDefaultNamespace() != null) ||

+				(namespace != null && !namespace.equals(getDefaultNamespace())))

+			defineNamespace(namespace, "");

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#setPretty(boolean)

+	 */

+	public void setPretty(boolean pretty) throws IOException {

+		this.isPretty = pretty;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#start()

+	 */

+	public void start() throws IOException {

+		// dont need to do anything

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#startCommentBlock()

+	 */

+	public void startCommentBlock() throws IOException {

+		if (commentBlock != null)

+			throw new IOException("Cannot nest comments");

+		/* we start a comment block by create a document fragment with 1 element root: commentRoot

+		 * Further node will be add to be children of this element root.

+		 */

+		commentBlock = doc.createDocumentFragment();

+		Node node = doc.createElement("commentRoot");

+		commentBlock.appendChild(node);

+		current.push(node);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#text(java.lang.String)

+	 */

+	public void text(String content) throws IOException {

+		text(content, false);

+	}

+	

+	public void text(String content, boolean dontEscape) throws IOException {

+		if (!dontEscape)

+			content = XMLUtil.escapeXML(content, null, false);

+		checkInElement();

+		Node node = doc.createTextNode(content);

+		getCurrentElement().appendChild(node);	

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#writeBytes(byte[])

+	 */

+	public void writeBytes(byte[] bytes) throws IOException {

+		text(new String(bytes));

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLNamespace.java b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLNamespace.java
index 85690bd..3d72e83 100644
--- a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLNamespace.java
+++ b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLNamespace.java
@@ -1,41 +1,41 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Jiva Medical - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.xml.impl;
-
-public class XMLNamespace {
-
-	private String namespace;
-	private String abbreviation;
-	
-	public XMLNamespace(String namespace, String abbreviation) {
-		super();
-		setNamespace(namespace);
-		setAbbreviation(abbreviation);
-	}
-
-	public String getAbbreviation() {
-		return abbreviation;
-	}
-
-	public void setAbbreviation(String abbreviation) {
-		this.abbreviation = abbreviation;
-	}
-
-	public String getNamespace() {
-		return namespace;
-	}
-
-	public void setNamespace(String namespace) {
-		this.namespace = namespace;
-	}
-
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Jiva Medical - initial API and implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.xml.impl;

+

+public class XMLNamespace {

+

+	private String namespace;

+	private String abbreviation;

+	

+	public XMLNamespace(String namespace, String abbreviation) {

+		super();

+		setNamespace(namespace);

+		setAbbreviation(abbreviation);

+	}

+

+	public String getAbbreviation() {

+		return abbreviation;

+	}

+

+	public void setAbbreviation(String abbreviation) {

+		this.abbreviation = abbreviation;

+	}

+

+	public String getNamespace() {

+		return namespace;

+	}

+

+	public void setNamespace(String namespace) {

+		this.namespace = namespace;

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLPullWriter.java b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLPullWriter.java
index a5f781c..5e63e2a 100644
--- a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLPullWriter.java
+++ b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLPullWriter.java
@@ -1,101 +1,101 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Jiva Medical - initial API and implementation
- *******************************************************************************/
-package org.eclipse.uomo.xml.impl;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-
-import org.eclipse.uomo.core.UOMoException;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-public class XMLPullWriter {
-
-	private XMLWriter xml;
-	
-	public XMLPullWriter(OutputStream stream) throws UnsupportedEncodingException, IOException {
-		super();
-		xml = new XMLWriter(stream, "UTF-8");
-		xml.start();
-	}
-
-	public XMLPullWriter(XMLWriter writer) throws UnsupportedEncodingException {
-		super();
-		xml = writer;
-	}
-
-	public void write(XmlPullParser xpp, boolean rootElement, String elementName, String defaultNamespace) throws UOMoException, IOException, XmlPullParserException {
-		if (defaultNamespace != null) {
-			if (!xml.namespaceDefined(defaultNamespace))
-				xml.setDefaultNamespace(defaultNamespace);
-		} else if (rootElement) 
-			xml.setDefaultNamespace(xpp.getNamespace());
-
-		if (elementName != null)
-			xml.open(defaultNamespace, elementName);
-		
-		if (rootElement)
-			processElement(xpp);
-		else {
-			processContents(xpp);
-			if (xpp.getEventType() != XmlPullParser.END_DOCUMENT)
-				xpp.next();
-		}
-		
-		if (elementName != null)
-			xml.close();
-		xml.flush();
-	}
-	
-	private void processContents(XmlPullParser xpp) throws XmlPullParserException, UOMoException, IOException {
-		while (xpp.getEventType() != XmlPullParser.END_TAG && xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
-			if (xpp.getEventType() == XmlPullParser.START_TAG)
-				processElement(xpp);
-			else if (xpp.getEventType() == XmlPullParser.TEXT)
-				processText(xpp);
-			else
-				throw new UOMoException("unhandled event type "+Integer.toString(xpp.getEventType()));
-		}
-	}
-
-	private void processElement(XmlPullParser xpp) throws UOMoException, XmlPullParserException, IOException {
-		xml.namespace(xpp.getNamespace());
-
-		processAttributes(xpp);
-		xml.open(xpp.getNamespace(), xpp.getName());
-		xpp.next();
-		
-		processContents(xpp);
-		
-		xml.close();
-		if (xpp.getEventType() != XmlPullParser.END_DOCUMENT)
-			xpp.next();
-	}
-
-	private void processText(XmlPullParser xpp) throws UOMoException, XmlPullParserException, IOException {
-		xml.text(xpp.getText());
-		xpp.next();
-	}
-
-	private void processAttributes(XmlPullParser xpp) throws IOException {
-		for (int i = 0; i < xpp.getAttributeCount(); i++) {
-			String ns = xpp.getAttributeNamespace(i);
-			if (!"".equals(ns)) {
-				xml.namespace(ns);
-     			xml.attribute(ns, xpp.getAttributeName(i), xpp.getAttributeValue(i));
-			} else 
-     			xml.attribute(xpp.getAttributeName(i), xpp.getAttributeValue(i));
-		}
-		
-	}
-
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Jiva Medical - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.uomo.xml.impl;

+

+import java.io.IOException;

+import java.io.OutputStream;

+import java.io.UnsupportedEncodingException;

+

+import org.eclipse.uomo.core.UOMoException;

+import org.xmlpull.v1.XmlPullParser;

+import org.xmlpull.v1.XmlPullParserException;

+

+public class XMLPullWriter {

+

+	private XMLWriter xml;

+	

+	public XMLPullWriter(OutputStream stream) throws UnsupportedEncodingException, IOException {

+		super();

+		xml = new XMLWriter(stream, "UTF-8");

+		xml.start();

+	}

+

+	public XMLPullWriter(XMLWriter writer) throws UnsupportedEncodingException {

+		super();

+		xml = writer;

+	}

+

+	public void write(XmlPullParser xpp, boolean rootElement, String elementName, String defaultNamespace) throws UOMoException, IOException, XmlPullParserException {

+		if (defaultNamespace != null) {

+			if (!xml.namespaceDefined(defaultNamespace))

+				xml.setDefaultNamespace(defaultNamespace);

+		} else if (rootElement) 

+			xml.setDefaultNamespace(xpp.getNamespace());

+

+		if (elementName != null)

+			xml.open(defaultNamespace, elementName);

+		

+		if (rootElement)

+			processElement(xpp);

+		else {

+			processContents(xpp);

+			if (xpp.getEventType() != XmlPullParser.END_DOCUMENT)

+				xpp.next();

+		}

+		

+		if (elementName != null)

+			xml.close();

+		xml.flush();

+	}

+	

+	private void processContents(XmlPullParser xpp) throws XmlPullParserException, UOMoException, IOException {

+		while (xpp.getEventType() != XmlPullParser.END_TAG && xpp.getEventType() != XmlPullParser.END_DOCUMENT) {

+			if (xpp.getEventType() == XmlPullParser.START_TAG)

+				processElement(xpp);

+			else if (xpp.getEventType() == XmlPullParser.TEXT)

+				processText(xpp);

+			else

+				throw new UOMoException("unhandled event type "+Integer.toString(xpp.getEventType()));

+		}

+	}

+

+	private void processElement(XmlPullParser xpp) throws UOMoException, XmlPullParserException, IOException {

+		xml.namespace(xpp.getNamespace());

+

+		processAttributes(xpp);

+		xml.open(xpp.getNamespace(), xpp.getName());

+		xpp.next();

+		

+		processContents(xpp);

+		

+		xml.close();

+		if (xpp.getEventType() != XmlPullParser.END_DOCUMENT)

+			xpp.next();

+	}

+

+	private void processText(XmlPullParser xpp) throws UOMoException, XmlPullParserException, IOException {

+		xml.text(xpp.getText());

+		xpp.next();

+	}

+

+	private void processAttributes(XmlPullParser xpp) throws IOException {

+		for (int i = 0; i < xpp.getAttributeCount(); i++) {

+			String ns = xpp.getAttributeNamespace(i);

+			if (!"".equals(ns)) {

+				xml.namespace(ns);

+     			xml.attribute(ns, xpp.getAttributeName(i), xpp.getAttributeValue(i));

+			} else 

+     			xml.attribute(xpp.getAttributeName(i), xpp.getAttributeValue(i));

+		}

+		

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLStringsParser.java b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLStringsParser.java
index 651a181..c794c81 100644
--- a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLStringsParser.java
+++ b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLStringsParser.java
@@ -1,76 +1,76 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Jiva Medical - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.xml.impl;
-
-import org.eclipse.uomo.xml.XMLObjectParser;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-public class XMLStringsParser extends XMLObjectParser {
-
-	private String namespace;
-	private String name;
-	
-	private String[] content;
-	private StringBuffer current = null;
-	
-	
-	public XMLStringsParser(String namespace, String name) {
-		super();
-		this.namespace = namespace;
-		this.name = name;
-	}
-
-	public void endElement(String namespace, String name) throws SAXException {
-		if (current != null)
-			addContent(current.toString());
-			
-		current = null;
-	}
-
-	private void addContent(String string) {
-		if (content == null)
-			content = new String[] {string};
-		else {
-			String[] newContent = new String[content.length + 1];
-			for (int i = 0; i < content.length; i++)
-				newContent[i] = content[i];
-			newContent[content.length] = string;
-			content = newContent;
-		}
-	}
-
-	public XMLObjectParser startElement(String namespace, String name, String defaultNamespace, Attributes attributes) throws SAXException {
-		if (namespace.equals(this.namespace) && name.equals(this.name)) {
-			current = new StringBuffer();
-			return null;
-		}
-		else
-			return super.startElement(namespace, name, defaultNamespace, attributes);
-	}
-
-	public void findText(char[] ch, int start, int length, boolean whitespace) throws SAXException {
-		if (current == null)
-			super.findText(ch, start, length, whitespace);
-		else
-			current.append(ch, start, length); 
-	}
-
-	public String[] getContent() {
-		return content;
-	}
-
-	public boolean hasText() throws SAXException {
-		return true;
-	}
-
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Jiva Medical - initial API and implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.xml.impl;

+

+import org.eclipse.uomo.xml.XMLObjectParser;

+import org.xml.sax.Attributes;

+import org.xml.sax.SAXException;

+

+public class XMLStringsParser extends XMLObjectParser {

+

+	private String namespace;

+	private String name;

+	

+	private String[] content;

+	private StringBuffer current = null;

+	

+	

+	public XMLStringsParser(String namespace, String name) {

+		super();

+		this.namespace = namespace;

+		this.name = name;

+	}

+

+	public void endElement(String namespace, String name) throws SAXException {

+		if (current != null)

+			addContent(current.toString());

+			

+		current = null;

+	}

+

+	private void addContent(String string) {

+		if (content == null)

+			content = new String[] {string};

+		else {

+			String[] newContent = new String[content.length + 1];

+			for (int i = 0; i < content.length; i++)

+				newContent[i] = content[i];

+			newContent[content.length] = string;

+			content = newContent;

+		}

+	}

+

+	public XMLObjectParser startElement(String namespace, String name, String defaultNamespace, Attributes attributes) throws SAXException {

+		if (namespace.equals(this.namespace) && name.equals(this.name)) {

+			current = new StringBuffer();

+			return null;

+		}

+		else

+			return super.startElement(namespace, name, defaultNamespace, attributes);

+	}

+

+	public void findText(char[] ch, int start, int length, boolean whitespace) throws SAXException {

+		if (current == null)

+			super.findText(ch, start, length, whitespace);

+		else

+			current.append(ch, start, length); 

+	}

+

+	public String[] getContent() {

+		return content;

+	}

+

+	public boolean hasText() throws SAXException {

+		return true;

+	}

+

+}

diff --git a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLWriter.java b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLWriter.java
index 7f44294..5b33c71 100644
--- a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLWriter.java
+++ b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLWriter.java
@@ -1,780 +1,780 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Jiva Medical - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.xml.impl;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-
-import org.eclipse.uomo.xml.IXMLWriter;
-import org.eclipse.uomo.xml.XMLUtil;
-
-/**
- * XML Writer class.
- */
-public class XMLWriter extends OutputStreamWriter implements IXMLWriter {
-
-	private boolean xmlHeader = true;
-	private String charset;
-	private boolean prettyBase;
-	private boolean prettyHeader;
-	private boolean pendingClose;
-	private boolean pendingOpen;
-	private String pendingComment;
-	private int lineType = LINE_UNIX;
-	private OutputStream stream;
-	private boolean started = false;
-	private String[] specialAttributeNames = new String[] {"id", "name" };
-	private boolean sortAttributes;
-	private int attributeLineWrap;
-	
-	public final static int LINE_UNIX = 0;
-	public final static int LINE_WINDOWS = 1;
-
-	public XMLWriter(OutputStream stream, String charset) throws UnsupportedEncodingException {
-		super(stream, charset);
-		this.stream = stream;
-		this.charset = charset;
-	}
-
-	protected boolean condition(boolean bTest, String message) throws IOException {
-		if (!bTest)
-			throw new IOException(message);
-		return bTest;
-	}
-
-	// -- writing context ------------------------------------------------
-
-
-	
-	/**
-	 * Returns the encoding.
-	 * 
-	 * @param charset
-	 * @return encoding
-	 * @throws IOException
-	 */
-	public static String getXMLCharsetName(String charset) throws IOException {
-		if (charset == null || charset.equals(""))
-			return "UTF-8";
-		else if (charset.equals("US-ASCII"))
-			return "UTF-8";
-		else if (XMLUtil.charSetImpliesAscii(charset))
-			return "ISO-8859-1";
-		else if (charset.equals("UTF-8"))
-			return "UTF-8";
-		else if (charset.equals("UTF-16") || charset.equals("UTF-16BE") || charset.equals("UTF-16LE"))
-			return "UTF-16";
-		else 
-			throw new IOException("Unknown charset encoding "+charset);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#start()
-	 */
-	public void start() throws IOException {
-		condition(!started, "attempt to start after starting");
-		levels.clear();
-		attributes = null;
-		try {
-			if (xmlHeader) {
-				write("<?xml version=\"1.0\" encoding=\""+getXMLCharsetName(charset)+"\"?>");
-				if (prettyBase || prettyHeader)
-					write(lineType == LINE_UNIX ? "\n" : "\r\n");
-			}
-		} catch (UnsupportedEncodingException e) {
-			// TODO Auto-generated catch block
-			throw new IOException(e.getMessage());
-		}
-		started = true;
-	}
-
-	private void checkStarted () throws IOException {
-		condition(started, "not started");
-	}
-
-	private void checkInElement() throws IOException {
-		condition(levels.size() > 0, "not in an element");
-	}
-
-	// -- attributes ----------------------------------------------------
-
-	private String[][] attributes;
-	
-	private void addAttribute(String name, String value) throws IOException {
-		addAttribute(name, value, false);
-	}
-
-	private void addAttribute(String name, String value, boolean noLines) throws IOException {
-		if (!XMLUtil.isNMToken(name))
-			throw new IOException("XML name "+name+" is not valid");
-
-		newLevelIfRequired();
-		value = XMLUtil.escapeXML(value, charset, noLines);
-
-		if (attributes == null) 
-			attributes = new String[][] {{name, value}};
-		else {
-			String[][] newattr = new String[attributes.length+1][];
-			for (int i = 0; i < attributes.length; i++) {
-				condition(!attributes[i][0].equals(name), "attempt to define attribute with name "+name+" more than once");
-				newattr[i] = attributes[i];
-			}
-			attributes = newattr;
-			attributes[attributes.length-1] = new String[] {name, value};
-		}
-	}
-
-	protected String getAttribute(String name) {
-		if (attributes != null) {
-			for (int i = 0; i < attributes.length; i++) {
-				if (attributes[i][0].equals(name)) {
-					return attributes[i][1];
-				}
-			}			
-		}
-		return null;
-	}
-	
-	protected void setAttribute(String name, String value) throws IOException {
-		newLevelIfRequired();
-		if (attributes == null) 
-			addAttribute(name, value, false);
-		else {
-			for (int i = 0; i < attributes.length; i++) {
-				if (attributes[i][0].equals(name)) {
-					attributes[i][1] = XMLUtil.escapeXML(value, charset, false);
-					return;
-				}
-			}
-			addAttribute(name, value);
-		}
-	}
-
-	protected void commitAttributes() throws IOException {
-		
-	}
-
-	
-	private boolean nameIsSpecial(String name) {
-		for (int i = 0; i < specialAttributeNames.length; i++) {
-			String n = specialAttributeNames[i];
-			if (n.equalsIgnoreCase(name))
-				return true;
-		}
-		return false;
-	}
-	
-	private void writeAttributes(int col) throws IOException {
-		commitAttributes();
-		if (attributes != null && sortAttributes)
-			sortAttributes();	
-		int c = col;
-		c = writeAttributeSet(true, c, col);
-		writeAttributeSet(false, c, col);
-		attributes = null;
-	}
-
-
-	private void sortAttributes() {
-		// bubble sort - look, it's easy
-		for (int i = 0; i < attributes.length - 1; i++) {
-			for (int j = 0; j < attributes.length - 1; j++) {
-				if (String.CASE_INSENSITIVE_ORDER.compare(attributes[j][0], attributes[j+1][0]) < 0) {
-					String[] t = attributes[j];
-					attributes[j] = attributes[j+1];
-					attributes[j+1] = t;
-				}
-			}
-		}
-		
-	}
-
-
-	private int writeAttributeSet(boolean special, int col, int wrap) throws IOException {
-		// first pass: name, id
-		if (attributes != null) {
-			for (int i=0; i < attributes.length; i++) {
-				String[] element = attributes[i];
-				if (nameIsSpecial(element[0]) == special) {
-					col = col + element[0].length()+element[1].length() + 4;
-					if (isPretty() && attributeLineWrap > 0 && col > attributeLineWrap && col > wrap) {
-						write(lineType == LINE_UNIX ? "\n" : "\r\n");
-						for (int j = 0; j < wrap; j++)
-							write(" ");
-						col = wrap;
-					}
-					write(' ');
-					write(element[0]);
-					write("=\"");
-					if (element[1] != null)
-						write(element[1]);
-					write("\"");
-				}
-			}
-		}
-		return col;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, java.lang.String, boolean)
-	 */
-	public void attribute(String namespace, String name, String value, boolean onlyIfNotEmpty) throws IOException {
-		if (!onlyIfNotEmpty || value != null && !value.equals(""))
-			attribute(namespace, name, value);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public void attribute(String namespace, String name, String value) throws IOException {
-
-		checkStarted();
-		if (namespace == null || namespace.equals("")) 
-			addAttribute(name, value);
-		else
-			addAttribute(getNSAbbreviation(namespace)+name, value);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, boolean)
-	 */
-	public void attribute(String name, String value, boolean onlyIfNotEmpty) throws IOException {
-		if (!onlyIfNotEmpty || value != null && !value.equals(""))
-			attribute(name, value);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String)
-	 */
-	public void attribute(String name, String value) throws IOException {
-		checkStarted();
-		addAttribute(name, value);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attributeNoLines(java.lang.String, java.lang.String)
-	 */
-	public void attributeNoLines(String name, String value) throws IOException {
-		checkStarted();
-		addAttribute(name, value, true);
-	}
-
-	// -- levels -------------------------------------------------
-
-	private XMLWriterStateStack levels = new XMLWriterStateStack();
-
-	private void newLevelIfRequired() throws IOException {
-		if (!pendingOpen) {
-			if (!levels.empty())
-				levels.current().seeChild();
-			XMLWriterState level = new XMLWriterState();
-			level.setPretty(isPretty());
-			levels.push(level);
-			pendingOpen = true;
-		}
-	}
-
-	// -- namespaces ---------------------------------------------
-
-
-	private void defineNamespace(String namespace, String abbrev) throws IOException {
-		checkStarted();
-		if (namespace != null && !namespace.equals("")) {
-			if (abbrev.equals(""))
-				abbrev = null;
-
-			newLevelIfRequired();
-
-			levels.current().addNamespaceDefn(namespace, abbrev);
-			if (abbrev == null)
-				addAttribute("xmlns", namespace);
-			else
-				addAttribute("xmlns:"+abbrev, namespace);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#findByNamespace(java.lang.String)
-	 */
-	public XMLNamespace findByNamespace(String namespace) {
-		for (int i = levels.size() - 1; i >= 0; i--) {
-			XMLNamespace ns = levels.item(i).getDefnByNamespace(namespace);
-			if (ns != null)
-				return ns;
-		}
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespaceDefined(java.lang.String)
-	 */
-	public boolean namespaceDefined(String namespace) {
-		return namespace == null || namespace.equals("") || findByNamespace(namespace) != null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#findByAbbreviation(java.lang.String)
-	 */
-	public XMLNamespace findByAbbreviation(String abbreviation) {
-		for (int i = levels.size() - 1; i >= 0; i--) {
-			XMLNamespace ns = levels.item(i).getDefnByAbbreviation(abbreviation);
-			if (ns != null)
-				return ns;
-		}
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#abbreviationDefined(java.lang.String)
-	 */
-	public boolean abbreviationDefined(String abbreviation) {
-		return findByAbbreviation(abbreviation) != null;
-	}
-
-	protected XMLNamespace findDefaultNamespace() {
-		for (int i = levels.size() - 1; i >= 0; i--) {
-			XMLNamespace ns = levels.item(i).getDefaultNamespace();
-			if (ns != null)
-				return ns;
-		}
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#getDefaultNamespace()
-	 */
-	public String getDefaultNamespace() {
-		XMLNamespace ns = findDefaultNamespace();
-		if (ns == null)
-			return null;
-		else
-			return ns.getNamespace();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespace(java.lang.String)
-	 */
-	public void namespace(String namespace) throws IOException {
-		if (!namespaceDefined(namespace)) {
-			int index = 0;
-			while (abbreviationDefined("ns"+Integer.toString(index))) 
-				index++;
-			defineNamespace(namespace, "ns"+Integer.toString(index));
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#defaultNamespace(java.lang.String)
-	 * 
-	 * Replace defaultNamespace()
-	 */
-	public void setDefaultNamespace(String namespace) throws IOException {
-		if ((namespace == null && getDefaultNamespace() != null) ||
-				(namespace != null && !namespace.equals(getDefaultNamespace())))
-			defineNamespace(namespace, "");			
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespace(java.lang.String, java.lang.String)
-	 */
-	public void namespace(String namespace, String abbreviation) throws IOException {
-		XMLNamespace ns = findByAbbreviation(abbreviation);
-		if (ns == null || !ns.getNamespace().equals(namespace))
-			defineNamespace(namespace, abbreviation);
-	}
-
-
-	private String getNSAbbreviation(String namespace) throws IOException {
-		if ("http://www.w3.org/XML/1998/namespace".equals(namespace))
-			return "xml:";
-		
-		if (namespace == null || "".equals(namespace))
-			return "";
-		
-		XMLNamespace ns = findByNamespace(namespace);
-		if (ns == null)
-			throw new IOException("Namespace "+namespace+" is not defined");
-		else if (ns.getAbbreviation() == null)
-			return "";
-		else
-			return ns.getAbbreviation()+":";
-	}
-
-	// -- public API -----------------------------------------------------------
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#comment(java.lang.String, boolean)
-	 */
-	public void comment(String comment, boolean doPretty) throws IOException {
-		checkStarted();
-		if (pendingClose) { 
-			write('>');
-			writePendingComment();
-			pendingClose = false;
-		}
-		if (doPretty) {
-			writePretty();
-			if (isPretty()) {
-				for (int i = 0; i < levels.size(); i++)
-					write("  ");
-			}
-		}
-		if (levels.inComment())
-			write("<!-- "+comment+" -- >");
-		else
-			write("<!-- "+comment+" -->");
-		if (doPretty && !isPretty())
-			writePretty();
-	}
-
-
-	private void writePendingComment() throws IOException {
-		if (pendingComment != null) {
-			if (isPretty())
-				write("   ");
-			if (levels.inComment())
-				write("<!-- "+pendingComment+" -- >");
-			else
-				write("<!-- "+pendingComment+" -->");
-		}
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String, java.lang.String)
-	 */
-	public void open(String namespace, String name) throws IOException {
-		open(namespace, name, null);
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public void open(String namespace, String name, String comment) throws IOException {
-		if (!XMLUtil.isNMToken(name))
-			throw new IOException("XML name "+name+" is not valid");
-		checkStarted();
-		if (pendingClose) { 
-			write('>');
-			writePendingComment();
-			pendingClose = false;
-		}
-
-		if (name == null) {
-			throw new IOException("name is null");
-		}
-		newLevelIfRequired();
-		levels.current().setName(name);
-		levels.current().setNamespace(namespace);
-		int col = writePretty();
-		write('<');
-		if (namespace == null) {
-			write(name);
-			col = col + name.length()+1;
-		} else {
-			String n = getNSAbbreviation(namespace)+name;
-			write(n);
-			col = col + n.length()+1;
-		}
-		writeAttributes(col);
-		pendingOpen = false;
-		pendingClose = true;
-		pendingComment = comment;
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close(java.lang.String)
-	 */
-	public void close(String name) throws IOException {
-		checkStarted();
-		if (levels.empty())
-			throw new IOException("Unable to close null|"+name+", nothing to close");
-		if (levels.current().getNamespace() != null || !levels.current().getName().equals(name))
-			throw new IOException("Unable to close null|"+name+", found "+levels.current().getNamespace()+"|"+levels.current().getName());
-		close();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close(java.lang.String, java.lang.String)
-	 */
-	public void close(String namespace, String name) throws IOException {
-		checkStarted();
-		if (levels.empty())
-			throw new IOException("Unable to close "+namespace+"|"+name+", nothing to close");
-		if (!levels.current().getNamespace().equals(namespace) || !levels.current().getName().equals(name))
-			throw new IOException("Unable to close "+namespace+"|"+name+", found "+levels.current().getNamespace()+"|"+levels.current().getName());
-		close();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#closeToLevel(int)
-	 */
-	public void closeToLevel(int count) throws IOException {
-		while (levels.size() > count)
-			close();		
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close()
-	 */
-	public void close() throws IOException {
-		checkStarted();
-		if (levels.empty()) {
-			super.close();
-		} else {
-			if (pendingClose) { 
-				write("/>");
-				writePendingComment();
-				pendingClose = false;
-			} else {
-				if (levels.current().hasChildren())
-					writePretty();
-				write("</");
-				if (levels.current().getNamespace() == null)
-					write(levels.current().getName());
-				else
-					write(getNSAbbreviation(levels.current().getNamespace())+levels.current().getName());
-				write('>');
-			}
-			levels.pop();
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String)
-	 */
-	public void open(String name) throws IOException {
-		open(null, name);
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String, boolean)
-	 */
-	public void element(String namespace, String name, String content, boolean onlyIfNotEmpty) throws IOException {
-		if (!onlyIfNotEmpty || content != null && !content.equals(""))
-			element(namespace, name, content);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public void element(String namespace, String name, String content, String comment) throws IOException {
-		if (!XMLUtil.isNMToken(name))
-			throw new IOException("XML name "+name+" is not valid");
-		open(namespace, name, comment);
-		text(content);
-		close();
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String)
-	 */
-	public void element(String namespace, String name, String content) throws IOException {
-		if (!XMLUtil.isNMToken(name))
-			throw new IOException("XML name "+name+" is not valid");
-		open(namespace, name);
-		text(content);
-		close();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, boolean)
-	 */
-	public void element(String name, String content, boolean onlyIfNotEmpty) throws IOException {
-		if (!onlyIfNotEmpty || content != null && !content.equals(""))
-			element(null, name, content);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String)
-	 */
-	public void element(String name, String content) throws IOException {
-		element(null, name, content);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#text(java.lang.String)
-	 */
-	public void text(String content) throws IOException {
-		text(content, false);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#text(java.lang.String, boolean)
-	 * 
-	 * Replace escapeText()
-	 */
-	public void text(String content, boolean dontEscape) throws IOException {
-		checkInElement();
-		if (content != null) {
-			if (pendingClose) { 
-				write(">");
-				writePendingComment();
-				pendingClose = false;
-			}
-			if (dontEscape)
-				write(content);
-			else
-				write(XMLUtil.escapeXML(content, charset, false));
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#cData(java.lang.String)
-	 */
-	public void cData(String text) throws IOException {
-		text("<![CDATA["+text+"]]>");		
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#writeBytes(byte[])
-	 */
-	public void writeBytes(byte[] bytes) throws IOException {
-		checkInElement();
-		if (pendingClose) { 
-			write(">");
-			writePendingComment();
-			pendingClose = false;
-		}
-		flush();
-		stream.write(bytes);
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#isPretty()
-	 */
-	public boolean isPretty() throws IOException {
-		return (levels == null || levels.empty()) ? prettyBase : levels.current().isPretty();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#setPretty(boolean)
-	 */
-	public void setPretty(boolean pretty) throws IOException {
-		if (levels == null || levels.empty())
-			this.prettyBase = pretty;
-		else 
-			levels.current().setPretty(pretty);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#startCommentBlock()
-	 */
-	public void startCommentBlock() throws IOException {
-		if (levels.inComment())
-			throw new IOException("cannot nest comments");
-		levels.current().setInComment(true);
-		if (isPretty())
-			writePretty();
-		write("<!--");
-		if (isPretty())
-			writePretty();		
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#endCommentBlock()
-	 */
-	public void endCommentBlock() throws IOException {
-		if (!levels.inComment())
-			throw new IOException("cannot close a comment block when it is open");
-		if (!levels.current().isInComment())
-			throw new IOException("cannot close a comment block when it is open");
-		if (isPretty())
-			writePretty();
-		write("-->");
-		if (isPretty())
-			writePretty();		
-		levels.current().setInComment(false);
-	}
-
-	public boolean isSortAttributes() {
-		return sortAttributes;
-	}
-
-	public void setSortAttributes(boolean sortAttributes) {
-		this.sortAttributes = sortAttributes;
-	}
-
-
-	public boolean isPrettyHeader() {
-		return prettyHeader;
-	}
-
-	public void setPrettyHeader(boolean pretty) {
-		this.prettyHeader = pretty;
-	}
-
-	public int writePretty() throws IOException {
-		return writePretty(true);
-	}
-	
-	public int writePretty(boolean eoln) throws IOException {
-		if (isPretty()) {
-			if (eoln)
-				write(lineType == LINE_UNIX ? "\n" : "\r\n");
-			for (int i = 0; i < levels.size() - 1; i++)
-				write("  ");
-			return (levels.size() - 1) * 2;
-		} else
-			return 0;
-	}
-
-	public int getLineType() {
-		return lineType;
-	}
-
-	public void setLineType(int lineType) {
-		this.lineType = lineType;
-	}
-
-	public boolean isXmlHeader() {
-		return xmlHeader;
-	}
-
-	public void setXmlHeader(boolean xmlHeader) {
-		this.xmlHeader = xmlHeader;
-	}
-
-	public String[] getSpecialAttributeNames() {
-		return specialAttributeNames;
-	}
-
-	public void setSpecialAttributeNames(String[] specialAttributeNames) {
-		this.specialAttributeNames = specialAttributeNames;
-	}
-
-	public int getAttributeLineWrap() {
-		return attributeLineWrap;
-	}
-
-	public void setAttributeLineWrap(int attributeLineWrap) {
-		this.attributeLineWrap = attributeLineWrap;
-	}
-
-	public void escapedText(String content) throws IOException {
-		text("");
-		int i = content.length();
-		if (isPretty())
-		  while (i > 0 && (content.charAt(i-1) == '\r' || content.charAt(i-1) == '\n'))
-			 i--;
-		write(content.substring(0, i));
-	}
-	
-	
-}
-
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Jiva Medical - initial API and implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.xml.impl;

+

+import java.io.IOException;

+import java.io.OutputStream;

+import java.io.OutputStreamWriter;

+import java.io.UnsupportedEncodingException;

+

+import org.eclipse.uomo.xml.IXMLWriter;

+import org.eclipse.uomo.xml.XMLUtil;

+

+/**

+ * XML Writer class.

+ */

+public class XMLWriter extends OutputStreamWriter implements IXMLWriter {

+

+	private boolean xmlHeader = true;

+	private String charset;

+	private boolean prettyBase;

+	private boolean prettyHeader;

+	private boolean pendingClose;

+	private boolean pendingOpen;

+	private String pendingComment;

+	private int lineType = LINE_UNIX;

+	private OutputStream stream;

+	private boolean started = false;

+	private String[] specialAttributeNames = new String[] {"id", "name" };

+	private boolean sortAttributes;

+	private int attributeLineWrap;

+	

+	public final static int LINE_UNIX = 0;

+	public final static int LINE_WINDOWS = 1;

+

+	public XMLWriter(OutputStream stream, String charset) throws UnsupportedEncodingException {

+		super(stream, charset);

+		this.stream = stream;

+		this.charset = charset;

+	}

+

+	protected boolean condition(boolean bTest, String message) throws IOException {

+		if (!bTest)

+			throw new IOException(message);

+		return bTest;

+	}

+

+	// -- writing context ------------------------------------------------

+

+

+	

+	/**

+	 * Returns the encoding.

+	 * 

+	 * @param charset

+	 * @return encoding

+	 * @throws IOException

+	 */

+	public static String getXMLCharsetName(String charset) throws IOException {

+		if (charset == null || charset.equals(""))

+			return "UTF-8";

+		else if (charset.equals("US-ASCII"))

+			return "UTF-8";

+		else if (XMLUtil.charSetImpliesAscii(charset))

+			return "ISO-8859-1";

+		else if (charset.equals("UTF-8"))

+			return "UTF-8";

+		else if (charset.equals("UTF-16") || charset.equals("UTF-16BE") || charset.equals("UTF-16LE"))

+			return "UTF-16";

+		else 

+			throw new IOException("Unknown charset encoding "+charset);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#start()

+	 */

+	public void start() throws IOException {

+		condition(!started, "attempt to start after starting");

+		levels.clear();

+		attributes = null;

+		try {

+			if (xmlHeader) {

+				write("<?xml version=\"1.0\" encoding=\""+getXMLCharsetName(charset)+"\"?>");

+				if (prettyBase || prettyHeader)

+					write(lineType == LINE_UNIX ? "\n" : "\r\n");

+			}

+		} catch (UnsupportedEncodingException e) {

+			// TODO Auto-generated catch block

+			throw new IOException(e.getMessage());

+		}

+		started = true;

+	}

+

+	private void checkStarted () throws IOException {

+		condition(started, "not started");

+	}

+

+	private void checkInElement() throws IOException {

+		condition(levels.size() > 0, "not in an element");

+	}

+

+	// -- attributes ----------------------------------------------------

+

+	private String[][] attributes;

+	

+	private void addAttribute(String name, String value) throws IOException {

+		addAttribute(name, value, false);

+	}

+

+	private void addAttribute(String name, String value, boolean noLines) throws IOException {

+		if (!XMLUtil.isNMToken(name))

+			throw new IOException("XML name "+name+" is not valid");

+

+		newLevelIfRequired();

+		value = XMLUtil.escapeXML(value, charset, noLines);

+

+		if (attributes == null) 

+			attributes = new String[][] {{name, value}};

+		else {

+			String[][] newattr = new String[attributes.length+1][];

+			for (int i = 0; i < attributes.length; i++) {

+				condition(!attributes[i][0].equals(name), "attempt to define attribute with name "+name+" more than once");

+				newattr[i] = attributes[i];

+			}

+			attributes = newattr;

+			attributes[attributes.length-1] = new String[] {name, value};

+		}

+	}

+

+	protected String getAttribute(String name) {

+		if (attributes != null) {

+			for (int i = 0; i < attributes.length; i++) {

+				if (attributes[i][0].equals(name)) {

+					return attributes[i][1];

+				}

+			}			

+		}

+		return null;

+	}

+	

+	protected void setAttribute(String name, String value) throws IOException {

+		newLevelIfRequired();

+		if (attributes == null) 

+			addAttribute(name, value, false);

+		else {

+			for (int i = 0; i < attributes.length; i++) {

+				if (attributes[i][0].equals(name)) {

+					attributes[i][1] = XMLUtil.escapeXML(value, charset, false);

+					return;

+				}

+			}

+			addAttribute(name, value);

+		}

+	}

+

+	protected void commitAttributes() throws IOException {

+		

+	}

+

+	

+	private boolean nameIsSpecial(String name) {

+		for (int i = 0; i < specialAttributeNames.length; i++) {

+			String n = specialAttributeNames[i];

+			if (n.equalsIgnoreCase(name))

+				return true;

+		}

+		return false;

+	}

+	

+	private void writeAttributes(int col) throws IOException {

+		commitAttributes();

+		if (attributes != null && sortAttributes)

+			sortAttributes();	

+		int c = col;

+		c = writeAttributeSet(true, c, col);

+		writeAttributeSet(false, c, col);

+		attributes = null;

+	}

+

+

+	private void sortAttributes() {

+		// bubble sort - look, it's easy

+		for (int i = 0; i < attributes.length - 1; i++) {

+			for (int j = 0; j < attributes.length - 1; j++) {

+				if (String.CASE_INSENSITIVE_ORDER.compare(attributes[j][0], attributes[j+1][0]) < 0) {

+					String[] t = attributes[j];

+					attributes[j] = attributes[j+1];

+					attributes[j+1] = t;

+				}

+			}

+		}

+		

+	}

+

+

+	private int writeAttributeSet(boolean special, int col, int wrap) throws IOException {

+		// first pass: name, id

+		if (attributes != null) {

+			for (int i=0; i < attributes.length; i++) {

+				String[] element = attributes[i];

+				if (nameIsSpecial(element[0]) == special) {

+					col = col + element[0].length()+element[1].length() + 4;

+					if (isPretty() && attributeLineWrap > 0 && col > attributeLineWrap && col > wrap) {

+						write(lineType == LINE_UNIX ? "\n" : "\r\n");

+						for (int j = 0; j < wrap; j++)

+							write(" ");

+						col = wrap;

+					}

+					write(' ');

+					write(element[0]);

+					write("=\"");

+					if (element[1] != null)

+						write(element[1]);

+					write("\"");

+				}

+			}

+		}

+		return col;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, java.lang.String, boolean)

+	 */

+	public void attribute(String namespace, String name, String value, boolean onlyIfNotEmpty) throws IOException {

+		if (!onlyIfNotEmpty || value != null && !value.equals(""))

+			attribute(namespace, name, value);

+	}

+	

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, java.lang.String)

+	 */

+	public void attribute(String namespace, String name, String value) throws IOException {

+

+		checkStarted();

+		if (namespace == null || namespace.equals("")) 

+			addAttribute(name, value);

+		else

+			addAttribute(getNSAbbreviation(namespace)+name, value);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String, boolean)

+	 */

+	public void attribute(String name, String value, boolean onlyIfNotEmpty) throws IOException {

+		if (!onlyIfNotEmpty || value != null && !value.equals(""))

+			attribute(name, value);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attribute(java.lang.String, java.lang.String)

+	 */

+	public void attribute(String name, String value) throws IOException {

+		checkStarted();

+		addAttribute(name, value);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#attributeNoLines(java.lang.String, java.lang.String)

+	 */

+	public void attributeNoLines(String name, String value) throws IOException {

+		checkStarted();

+		addAttribute(name, value, true);

+	}

+

+	// -- levels -------------------------------------------------

+

+	private XMLWriterStateStack levels = new XMLWriterStateStack();

+

+	private void newLevelIfRequired() throws IOException {

+		if (!pendingOpen) {

+			if (!levels.empty())

+				levels.current().seeChild();

+			XMLWriterState level = new XMLWriterState();

+			level.setPretty(isPretty());

+			levels.push(level);

+			pendingOpen = true;

+		}

+	}

+

+	// -- namespaces ---------------------------------------------

+

+

+	private void defineNamespace(String namespace, String abbrev) throws IOException {

+		checkStarted();

+		if (namespace != null && !namespace.equals("")) {

+			if (abbrev.equals(""))

+				abbrev = null;

+

+			newLevelIfRequired();

+

+			levels.current().addNamespaceDefn(namespace, abbrev);

+			if (abbrev == null)

+				addAttribute("xmlns", namespace);

+			else

+				addAttribute("xmlns:"+abbrev, namespace);

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#findByNamespace(java.lang.String)

+	 */

+	public XMLNamespace findByNamespace(String namespace) {

+		for (int i = levels.size() - 1; i >= 0; i--) {

+			XMLNamespace ns = levels.item(i).getDefnByNamespace(namespace);

+			if (ns != null)

+				return ns;

+		}

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespaceDefined(java.lang.String)

+	 */

+	public boolean namespaceDefined(String namespace) {

+		return namespace == null || namespace.equals("") || findByNamespace(namespace) != null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#findByAbbreviation(java.lang.String)

+	 */

+	public XMLNamespace findByAbbreviation(String abbreviation) {

+		for (int i = levels.size() - 1; i >= 0; i--) {

+			XMLNamespace ns = levels.item(i).getDefnByAbbreviation(abbreviation);

+			if (ns != null)

+				return ns;

+		}

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#abbreviationDefined(java.lang.String)

+	 */

+	public boolean abbreviationDefined(String abbreviation) {

+		return findByAbbreviation(abbreviation) != null;

+	}

+

+	protected XMLNamespace findDefaultNamespace() {

+		for (int i = levels.size() - 1; i >= 0; i--) {

+			XMLNamespace ns = levels.item(i).getDefaultNamespace();

+			if (ns != null)

+				return ns;

+		}

+		return null;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#getDefaultNamespace()

+	 */

+	public String getDefaultNamespace() {

+		XMLNamespace ns = findDefaultNamespace();

+		if (ns == null)

+			return null;

+		else

+			return ns.getNamespace();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespace(java.lang.String)

+	 */

+	public void namespace(String namespace) throws IOException {

+		if (!namespaceDefined(namespace)) {

+			int index = 0;

+			while (abbreviationDefined("ns"+Integer.toString(index))) 

+				index++;

+			defineNamespace(namespace, "ns"+Integer.toString(index));

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#defaultNamespace(java.lang.String)

+	 * 

+	 * Replace defaultNamespace()

+	 */

+	public void setDefaultNamespace(String namespace) throws IOException {

+		if ((namespace == null && getDefaultNamespace() != null) ||

+				(namespace != null && !namespace.equals(getDefaultNamespace())))

+			defineNamespace(namespace, "");			

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#namespace(java.lang.String, java.lang.String)

+	 */

+	public void namespace(String namespace, String abbreviation) throws IOException {

+		XMLNamespace ns = findByAbbreviation(abbreviation);

+		if (ns == null || !ns.getNamespace().equals(namespace))

+			defineNamespace(namespace, abbreviation);

+	}

+

+

+	private String getNSAbbreviation(String namespace) throws IOException {

+		if ("http://www.w3.org/XML/1998/namespace".equals(namespace))

+			return "xml:";

+		

+		if (namespace == null || "".equals(namespace))

+			return "";

+		

+		XMLNamespace ns = findByNamespace(namespace);

+		if (ns == null)

+			throw new IOException("Namespace "+namespace+" is not defined");

+		else if (ns.getAbbreviation() == null)

+			return "";

+		else

+			return ns.getAbbreviation()+":";

+	}

+

+	// -- public API -----------------------------------------------------------

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#comment(java.lang.String, boolean)

+	 */

+	public void comment(String comment, boolean doPretty) throws IOException {

+		checkStarted();

+		if (pendingClose) { 

+			write('>');

+			writePendingComment();

+			pendingClose = false;

+		}

+		if (doPretty) {

+			writePretty();

+			if (isPretty()) {

+				for (int i = 0; i < levels.size(); i++)

+					write("  ");

+			}

+		}

+		if (levels.inComment())

+			write("<!-- "+comment+" -- >");

+		else

+			write("<!-- "+comment+" -->");

+		if (doPretty && !isPretty())

+			writePretty();

+	}

+

+

+	private void writePendingComment() throws IOException {

+		if (pendingComment != null) {

+			if (isPretty())

+				write("   ");

+			if (levels.inComment())

+				write("<!-- "+pendingComment+" -- >");

+			else

+				write("<!-- "+pendingComment+" -->");

+		}

+	}

+	

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String, java.lang.String)

+	 */

+	public void open(String namespace, String name) throws IOException {

+		open(namespace, name, null);

+	}

+

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String, java.lang.String, java.lang.String)

+	 */

+	public void open(String namespace, String name, String comment) throws IOException {

+		if (!XMLUtil.isNMToken(name))

+			throw new IOException("XML name "+name+" is not valid");

+		checkStarted();

+		if (pendingClose) { 

+			write('>');

+			writePendingComment();

+			pendingClose = false;

+		}

+

+		if (name == null) {

+			throw new IOException("name is null");

+		}

+		newLevelIfRequired();

+		levels.current().setName(name);

+		levels.current().setNamespace(namespace);

+		int col = writePretty();

+		write('<');

+		if (namespace == null) {

+			write(name);

+			col = col + name.length()+1;

+		} else {

+			String n = getNSAbbreviation(namespace)+name;

+			write(n);

+			col = col + n.length()+1;

+		}

+		writeAttributes(col);

+		pendingOpen = false;

+		pendingClose = true;

+		pendingComment = comment;

+	}

+

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close(java.lang.String)

+	 */

+	public void close(String name) throws IOException {

+		checkStarted();

+		if (levels.empty())

+			throw new IOException("Unable to close null|"+name+", nothing to close");

+		if (levels.current().getNamespace() != null || !levels.current().getName().equals(name))

+			throw new IOException("Unable to close null|"+name+", found "+levels.current().getNamespace()+"|"+levels.current().getName());

+		close();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close(java.lang.String, java.lang.String)

+	 */

+	public void close(String namespace, String name) throws IOException {

+		checkStarted();

+		if (levels.empty())

+			throw new IOException("Unable to close "+namespace+"|"+name+", nothing to close");

+		if (!levels.current().getNamespace().equals(namespace) || !levels.current().getName().equals(name))

+			throw new IOException("Unable to close "+namespace+"|"+name+", found "+levels.current().getNamespace()+"|"+levels.current().getName());

+		close();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#closeToLevel(int)

+	 */

+	public void closeToLevel(int count) throws IOException {

+		while (levels.size() > count)

+			close();		

+	}

+

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#close()

+	 */

+	public void close() throws IOException {

+		checkStarted();

+		if (levels.empty()) {

+			super.close();

+		} else {

+			if (pendingClose) { 

+				write("/>");

+				writePendingComment();

+				pendingClose = false;

+			} else {

+				if (levels.current().hasChildren())

+					writePretty();

+				write("</");

+				if (levels.current().getNamespace() == null)

+					write(levels.current().getName());

+				else

+					write(getNSAbbreviation(levels.current().getNamespace())+levels.current().getName());

+				write('>');

+			}

+			levels.pop();

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#open(java.lang.String)

+	 */

+	public void open(String name) throws IOException {

+		open(null, name);

+	}

+

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String, boolean)

+	 */

+	public void element(String namespace, String name, String content, boolean onlyIfNotEmpty) throws IOException {

+		if (!onlyIfNotEmpty || content != null && !content.equals(""))

+			element(namespace, name, content);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

+	 */

+	public void element(String namespace, String name, String content, String comment) throws IOException {

+		if (!XMLUtil.isNMToken(name))

+			throw new IOException("XML name "+name+" is not valid");

+		open(namespace, name, comment);

+		text(content);

+		close();

+	}

+	

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, java.lang.String)

+	 */

+	public void element(String namespace, String name, String content) throws IOException {

+		if (!XMLUtil.isNMToken(name))

+			throw new IOException("XML name "+name+" is not valid");

+		open(namespace, name);

+		text(content);

+		close();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String, boolean)

+	 */

+	public void element(String name, String content, boolean onlyIfNotEmpty) throws IOException {

+		if (!onlyIfNotEmpty || content != null && !content.equals(""))

+			element(null, name, content);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#element(java.lang.String, java.lang.String)

+	 */

+	public void element(String name, String content) throws IOException {

+		element(null, name, content);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#text(java.lang.String)

+	 */

+	public void text(String content) throws IOException {

+		text(content, false);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#text(java.lang.String, boolean)

+	 * 

+	 * Replace escapeText()

+	 */

+	public void text(String content, boolean dontEscape) throws IOException {

+		checkInElement();

+		if (content != null) {

+			if (pendingClose) { 

+				write(">");

+				writePendingComment();

+				pendingClose = false;

+			}

+			if (dontEscape)

+				write(content);

+			else

+				write(XMLUtil.escapeXML(content, charset, false));

+		}

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#cData(java.lang.String)

+	 */

+	public void cData(String text) throws IOException {

+		text("<![CDATA["+text+"]]>");		

+	}

+	

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#writeBytes(byte[])

+	 */

+	public void writeBytes(byte[] bytes) throws IOException {

+		checkInElement();

+		if (pendingClose) { 

+			write(">");

+			writePendingComment();

+			pendingClose = false;

+		}

+		flush();

+		stream.write(bytes);

+	}

+

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#isPretty()

+	 */

+	public boolean isPretty() throws IOException {

+		return (levels == null || levels.empty()) ? prettyBase : levels.current().isPretty();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#setPretty(boolean)

+	 */

+	public void setPretty(boolean pretty) throws IOException {

+		if (levels == null || levels.empty())

+			this.prettyBase = pretty;

+		else 

+			levels.current().setPretty(pretty);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#startCommentBlock()

+	 */

+	public void startCommentBlock() throws IOException {

+		if (levels.inComment())

+			throw new IOException("cannot nest comments");

+		levels.current().setInComment(true);

+		if (isPretty())

+			writePretty();

+		write("<!--");

+		if (isPretty())

+			writePretty();		

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ohf.utilities.xml.IXMLWriter#endCommentBlock()

+	 */

+	public void endCommentBlock() throws IOException {

+		if (!levels.inComment())

+			throw new IOException("cannot close a comment block when it is open");

+		if (!levels.current().isInComment())

+			throw new IOException("cannot close a comment block when it is open");

+		if (isPretty())

+			writePretty();

+		write("-->");

+		if (isPretty())

+			writePretty();		

+		levels.current().setInComment(false);

+	}

+

+	public boolean isSortAttributes() {

+		return sortAttributes;

+	}

+

+	public void setSortAttributes(boolean sortAttributes) {

+		this.sortAttributes = sortAttributes;

+	}

+

+

+	public boolean isPrettyHeader() {

+		return prettyHeader;

+	}

+

+	public void setPrettyHeader(boolean pretty) {

+		this.prettyHeader = pretty;

+	}

+

+	public int writePretty() throws IOException {

+		return writePretty(true);

+	}

+	

+	public int writePretty(boolean eoln) throws IOException {

+		if (isPretty()) {

+			if (eoln)

+				write(lineType == LINE_UNIX ? "\n" : "\r\n");

+			for (int i = 0; i < levels.size() - 1; i++)

+				write("  ");

+			return (levels.size() - 1) * 2;

+		} else

+			return 0;

+	}

+

+	public int getLineType() {

+		return lineType;

+	}

+

+	public void setLineType(int lineType) {

+		this.lineType = lineType;

+	}

+

+	public boolean isXmlHeader() {

+		return xmlHeader;

+	}

+

+	public void setXmlHeader(boolean xmlHeader) {

+		this.xmlHeader = xmlHeader;

+	}

+

+	public String[] getSpecialAttributeNames() {

+		return specialAttributeNames;

+	}

+

+	public void setSpecialAttributeNames(String[] specialAttributeNames) {

+		this.specialAttributeNames = specialAttributeNames;

+	}

+

+	public int getAttributeLineWrap() {

+		return attributeLineWrap;

+	}

+

+	public void setAttributeLineWrap(int attributeLineWrap) {

+		this.attributeLineWrap = attributeLineWrap;

+	}

+

+	public void escapedText(String content) throws IOException {

+		text("");

+		int i = content.length();

+		if (isPretty())

+		  while (i > 0 && (content.charAt(i-1) == '\r' || content.charAt(i-1) == '\n'))

+			 i--;

+		write(content.substring(0, i));

+	}

+	

+	

+}

+

diff --git a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLWriterStateStack.java b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLWriterStateStack.java
index c3c90f1..cd49566 100644
--- a/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLWriterStateStack.java
+++ b/bundles/org.eclipse.uomo.xml/src/main/java/org/eclipse/uomo/xml/impl/XMLWriterStateStack.java
@@ -1,67 +1,67 @@
-/*******************************************************************************
- * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *    Jiva Medical - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.uomo.xml.impl;
-
-import java.io.IOException;
-import java.util.Vector;
-
-
-class XMLWriterStateStack {
-
-	private Vector<XMLWriterState> items = new Vector<XMLWriterState>();
-
-	public int size(){
-		return items.size();
-	}
-	
-	public boolean empty(){
-		return items.size() == 0;
-	}
-	
-	public XMLWriterState current() throws IOException {
-		if (empty())
-			throw new IOException("stack is empty trying to get current");
-		return (XMLWriterState)items.get(items.size() - 1);
-	}
-	
-	
-	public void push(XMLWriterState element) {
-		items.add(element);		
-	}
-		
-	public void clear () {
-		if (items != null)
-		  items.clear();
-	}
-
-	public void pop() throws IOException {
-		if (empty())
-			throw new IOException("stack is empty trying to pop");
-		if (current().isInComment())
-			throw new IOException("Must close a comment sequence in the element in which it was started");
-		
-		items.remove(items.size() - 1);		
-	}
-
-	public XMLWriterState item(int index) {
-		return (XMLWriterState)items.get(index);
-	}
-
-	public boolean inComment() {
-		for (int i = 0; i < items.size(); i++) {
-			if (((XMLWriterState)items.get(i)).isInComment())
-				return true;					
-		}
-		return false;
-	}
-
-}
+/*******************************************************************************

+ * Crown Copyright (c) 2006, 2007, Copyright (c) 2006, 2007 Jiva Medical.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ * 

+ * Contributors:

+ *    Jiva Medical - initial API and implementation

+ *******************************************************************************/

+

+package org.eclipse.uomo.xml.impl;

+

+import java.io.IOException;

+import java.util.Vector;

+

+

+class XMLWriterStateStack {

+

+	private Vector<XMLWriterState> items = new Vector<XMLWriterState>();

+

+	public int size(){

+		return items.size();

+	}

+	

+	public boolean empty(){

+		return items.size() == 0;

+	}

+	

+	public XMLWriterState current() throws IOException {

+		if (empty())

+			throw new IOException("stack is empty trying to get current");

+		return (XMLWriterState)items.get(items.size() - 1);

+	}

+	

+	

+	public void push(XMLWriterState element) {

+		items.add(element);		

+	}

+		

+	public void clear () {

+		if (items != null)

+		  items.clear();

+	}

+

+	public void pop() throws IOException {

+		if (empty())

+			throw new IOException("stack is empty trying to pop");

+		if (current().isInComment())

+			throw new IOException("Must close a comment sequence in the element in which it was started");

+		

+		items.remove(items.size() - 1);		

+	}

+

+	public XMLWriterState item(int index) {

+		return (XMLWriterState)items.get(index);

+	}

+

+	public boolean inComment() {

+		for (int i = 0; i < items.size(); i++) {

+			if (((XMLWriterState)items.get(i)).isInComment())

+				return true;					

+		}

+		return false;

+	}

+

+}

diff --git a/bundles/pom.xml b/bundles/pom.xml
index 9b57053..db800e0 100644
--- a/bundles/pom.xml
+++ b/bundles/pom.xml
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>org.eclipse.uomo</artifactId>
-		<groupId>org.eclipse.uomo</groupId>
-		<version>0.7.0-SNAPSHOT</version>
-	</parent>
-  <artifactId>org.eclipse.uomo.bundles</artifactId>
-  <name>Eclipse UOMo Bundles</name>
-  <packaging>pom</packaging>
-  <modules>
-  	<module>org.eclipse.uomo.core</module>
-  	<module>org.eclipse.uomo.core.tests</module>
-  	<module>org.eclipse.uomo.units</module>
-  	<module>org.eclipse.uomo.units.tests</module>
-  	<module>org.eclipse.uomo.xml</module>
-  	<module>org.eclipse.uomo.xml.tests</module>
-  	<module>org.eclipse.uomo.util</module>
-  	<module>org.eclipse.uomo.util.tests</module>
-  	<module>org.eclipse.uomo.ucum</module>
-  	<module>org.eclipse.uomo.ucum.tests</module>
-  	<module>org.eclipse.uomo.business</module>
-  	<module>org.eclipse.uomo.ui</module>
-  	<!-- <module>org.eclipse.uomo.business.tests</module>-->
-  </modules>
+<?xml version="1.0" encoding="UTF-8"?>

+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<artifactId>org.eclipse.uomo</artifactId>

+		<groupId>org.eclipse.uomo</groupId>

+		<version>0.7.0-SNAPSHOT</version>

+	</parent>

+  <artifactId>org.eclipse.uomo.bundles</artifactId>

+  <name>Eclipse UOMo Bundles</name>

+  <packaging>pom</packaging>

+  <modules>

+  	<module>org.eclipse.uomo.core</module>

+  	<module>org.eclipse.uomo.core.tests</module>

+  	<module>org.eclipse.uomo.units</module>

+  	<module>org.eclipse.uomo.units.tests</module>

+  	<module>org.eclipse.uomo.xml</module>

+  	<module>org.eclipse.uomo.xml.tests</module>

+  	<module>org.eclipse.uomo.util</module>

+  	<module>org.eclipse.uomo.util.tests</module>

+  	<module>org.eclipse.uomo.ucum</module>

+  	<module>org.eclipse.uomo.ucum.tests</module>

+  	<module>org.eclipse.uomo.business</module>

+  	<module>org.eclipse.uomo.ui</module>

+  	<!-- <module>org.eclipse.uomo.business.tests</module>-->

+  </modules>

 </project>
\ No newline at end of file
diff --git a/examples/.gitignore b/examples/.gitignore
index 834befa..95cea85 100644
--- a/examples/.gitignore
+++ b/examples/.gitignore
@@ -1,3 +1,3 @@
-/src
-/.settings
-/target
+/src

+/.settings

+/target

diff --git a/examples/business/.project b/examples/business/.project
index 152554a..0b0abb8 100644
--- a/examples/business/.project
+++ b/examples/business/.project
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.examples.business</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.examples.business</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/examples/business/org.eclipse.uomo.examples.business.console/.classpath b/examples/business/org.eclipse.uomo.examples.business.console/.classpath
index 6a6c8e3..63cc387 100644
--- a/examples/business/org.eclipse.uomo.examples.business.console/.classpath
+++ b/examples/business/org.eclipse.uomo.examples.business.console/.classpath
@@ -1,31 +1,31 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" output="target/classes" path="src/main/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/examples/business/org.eclipse.uomo.examples.business.console/pom.xml b/examples/business/org.eclipse.uomo.examples.business.console/pom.xml
index 28faf72..3679e26 100644
--- a/examples/business/org.eclipse.uomo.examples.business.console/pom.xml
+++ b/examples/business/org.eclipse.uomo.examples.business.console/pom.xml
@@ -1,49 +1,49 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.eclipse.uomo.examples.business</groupId>
-		<artifactId>org.eclipse.uomo.examples.business</artifactId>
-		<version>0.7.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>org.eclipse.uomo.examples.business.console</artifactId>
-	<name>UOMo Business Console Examples</name>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.unitsofmeasurement</groupId>
-			<artifactId>unit-api</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.uomo</groupId>
-			<artifactId>org.eclipse.uomo.units</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.uomo</groupId>
-			<artifactId>org.eclipse.uomo.business</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.hamcrest</groupId>
-			<artifactId>hamcrest-all</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.uomo</groupId>
-			<artifactId>org.eclipse.uomo.core</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.ibm.icu</groupId>
-			<artifactId>icu4j</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse</groupId>
-			<artifactId>osgi</artifactId>
-		</dependency>
-	</dependencies>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<groupId>org.eclipse.uomo.examples.business</groupId>

+		<artifactId>org.eclipse.uomo.examples.business</artifactId>

+		<version>0.7.0-SNAPSHOT</version>

+	</parent>

+	<artifactId>org.eclipse.uomo.examples.business.console</artifactId>

+	<name>UOMo Business Console Examples</name>

+

+	<dependencies>

+		<dependency>

+			<groupId>org.unitsofmeasurement</groupId>

+			<artifactId>unit-api</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.uomo</groupId>

+			<artifactId>org.eclipse.uomo.units</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.uomo</groupId>

+			<artifactId>org.eclipse.uomo.business</artifactId>

+		</dependency>

+

+		<dependency>

+			<groupId>junit</groupId>

+			<artifactId>junit</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.hamcrest</groupId>

+			<artifactId>hamcrest-all</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.uomo</groupId>

+			<artifactId>org.eclipse.uomo.core</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>com.ibm.icu</groupId>

+			<artifactId>icu4j</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse</groupId>

+			<artifactId>osgi</artifactId>

+		</dependency>

+	</dependencies>

 </project>
\ No newline at end of file
diff --git a/examples/business/pom.xml b/examples/business/pom.xml
index cb4edb6..133c763 100644
--- a/examples/business/pom.xml
+++ b/examples/business/pom.xml
@@ -1,35 +1,35 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>org.eclipse.uomo.examples</artifactId>
-		<groupId>org.eclipse.uomo</groupId>
-		<version>0.7.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>org.eclipse.uomo.examples.business</artifactId>
-	<packaging>pom</packaging>
-	<name>Eclipse UOMo Business Examples</name>
-	<modules>
-    <module>org.eclipse.uomo.examples.business.console</module>
-	</modules>
-	<!-- ==================================================== -->
-    <!-- Repositories. This is where Maven looks for dependencies. 
-         The Maven repository is implicit and doesn't need 
-         to be specified. -->
-    <!-- ==================================================== -->
-    <repositories>
-        <repository>
-            <id>maven-geotoolkit.org</id>
-            <name>GeoToolkit Repository for Maven</name>
-            <url>http://maven.geotoolkit.org/</url>
-        </repository>
-        
-        <repository>
-            <id>OpenL10n</id>
-            <name>Openl10.net</name>
-            <url>http://nexus.openl10n.net/content/groups/public/</url>
-        </repository>
-    </repositories>
-	
-    <groupId>org.eclipse.uomo.examples.business</groupId>
+<?xml version="1.0" encoding="UTF-8"?>

+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<artifactId>org.eclipse.uomo.examples</artifactId>

+		<groupId>org.eclipse.uomo</groupId>

+		<version>0.7.0-SNAPSHOT</version>

+	</parent>

+	<artifactId>org.eclipse.uomo.examples.business</artifactId>

+	<packaging>pom</packaging>

+	<name>Eclipse UOMo Business Examples</name>

+	<modules>

+    <module>org.eclipse.uomo.examples.business.console</module>

+	</modules>

+	<!-- ==================================================== -->

+    <!-- Repositories. This is where Maven looks for dependencies. 

+         The Maven repository is implicit and doesn't need 

+         to be specified. -->

+    <!-- ==================================================== -->

+    <repositories>

+        <repository>

+            <id>maven-geotoolkit.org</id>

+            <name>GeoToolkit Repository for Maven</name>

+            <url>http://maven.geotoolkit.org/</url>

+        </repository>

+        

+        <repository>

+            <id>OpenL10n</id>

+            <name>Openl10.net</name>

+            <url>http://nexus.openl10n.net/content/groups/public/</url>

+        </repository>

+    </repositories>

+	

+    <groupId>org.eclipse.uomo.examples.business</groupId>

 </project>
\ No newline at end of file
diff --git a/examples/pom.xml b/examples/pom.xml
index 48248ed..7d7d06a 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -1,96 +1,96 @@
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-	<parent>
-		<artifactId>org.eclipse.uomo</artifactId>
-		<groupId>org.eclipse.uomo</groupId>
-		<version>0.7.0-SNAPSHOT</version>
-	</parent>
-	<modelVersion>4.0.0</modelVersion>
-	<artifactId>org.eclipse.uomo.examples</artifactId>
-	<packaging>pom</packaging>
-	<name>Eclipse UOMo Examples</name>
-	<build>
-		<plugins>
-			<!-- ======================================================= -->
-			<!-- Compilation -->
-			<!-- ======================================================= -->
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<version>${maven.compilerPlugin.version}</version>
-				<configuration>
-					<source>${project.build.javaVersion}</source>
-					<target>${project.build.javaVersion}</target>
-					<encoding>${project.build.sourceEncoding}</encoding>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-	<modules>
-		<module>business</module>
-		<module>units</module>
-		<module>ucum</module>
-	</modules>
-	<!-- modules> <module>org.eclipse.uomo.test</module> </modules -->
-
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>org.unitsofmeasurement</groupId>
-				<artifactId>unit-api</artifactId>
-				<version>0.6.1</version>
-			</dependency>
-			<dependency>
-				<groupId>org.eclipse.uomo</groupId>
-				<artifactId>org.eclipse.uomo.units</artifactId>
-				<version>${uomo-version}</version>
-			</dependency>
-			<dependency>
-				<groupId>org.eclipse.uomo</groupId>
-				<artifactId>org.eclipse.uomo.util</artifactId>
-				<version>${uomo-version}</version>
-			</dependency>
-			<dependency>
-				<groupId>org.eclipse.uomo</groupId>
-				<artifactId>org.eclipse.uomo.ucum</artifactId>
-				<version>${uomo-version}</version>
-			</dependency>
-			<dependency>
-				<groupId>org.eclipse.uomo</groupId>
-				<artifactId>org.eclipse.uomo.business</artifactId>
-				<version>${uomo-version}</version>
-			</dependency>
-
-			<dependency>
-				<groupId>junit</groupId>
-				<artifactId>junit</artifactId>
-				<version>4.8.1</version>
-				<scope>test</scope>
-			</dependency>
-			<dependency>
-				<groupId>org.hamcrest</groupId>
-				<artifactId>hamcrest-all</artifactId>
-				<version>1.1</version>
-				<scope>test</scope>
-			</dependency>
-			<dependency>
-				<groupId>org.eclipse.uomo</groupId>
-				<artifactId>org.eclipse.uomo.core</artifactId>
-				<version>${uomo-version}</version>
-			</dependency>
-			<dependency>
-				<groupId>com.ibm.icu</groupId>
-				<artifactId>icu4j</artifactId>
-				<version>${icu4j-version}</version>
-			</dependency>
-			<dependency>
-				<groupId>org.eclipse</groupId>
-				<artifactId>osgi</artifactId>
-				<version>3.5.0.v20090520</version>
-			</dependency>
-
-		</dependencies>
-	</dependencyManagement>
-
+<project

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+	<parent>

+		<artifactId>org.eclipse.uomo</artifactId>

+		<groupId>org.eclipse.uomo</groupId>

+		<version>0.7.0-SNAPSHOT</version>

+	</parent>

+	<modelVersion>4.0.0</modelVersion>

+	<artifactId>org.eclipse.uomo.examples</artifactId>

+	<packaging>pom</packaging>

+	<name>Eclipse UOMo Examples</name>

+	<build>

+		<plugins>

+			<!-- ======================================================= -->

+			<!-- Compilation -->

+			<!-- ======================================================= -->

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-compiler-plugin</artifactId>

+				<version>${maven.compilerPlugin.version}</version>

+				<configuration>

+					<source>${project.build.javaVersion}</source>

+					<target>${project.build.javaVersion}</target>

+					<encoding>${project.build.sourceEncoding}</encoding>

+				</configuration>

+			</plugin>

+		</plugins>

+	</build>

+	<modules>

+		<module>business</module>

+		<module>units</module>

+		<module>ucum</module>

+	</modules>

+	<!-- modules> <module>org.eclipse.uomo.test</module> </modules -->

+

+	<dependencyManagement>

+		<dependencies>

+			<dependency>

+				<groupId>org.unitsofmeasurement</groupId>

+				<artifactId>unit-api</artifactId>

+				<version>0.6.1</version>

+			</dependency>

+			<dependency>

+				<groupId>org.eclipse.uomo</groupId>

+				<artifactId>org.eclipse.uomo.units</artifactId>

+				<version>${uomo-version}</version>

+			</dependency>

+			<dependency>

+				<groupId>org.eclipse.uomo</groupId>

+				<artifactId>org.eclipse.uomo.util</artifactId>

+				<version>${uomo-version}</version>

+			</dependency>

+			<dependency>

+				<groupId>org.eclipse.uomo</groupId>

+				<artifactId>org.eclipse.uomo.ucum</artifactId>

+				<version>${uomo-version}</version>

+			</dependency>

+			<dependency>

+				<groupId>org.eclipse.uomo</groupId>

+				<artifactId>org.eclipse.uomo.business</artifactId>

+				<version>${uomo-version}</version>

+			</dependency>

+

+			<dependency>

+				<groupId>junit</groupId>

+				<artifactId>junit</artifactId>

+				<version>4.8.1</version>

+				<scope>test</scope>

+			</dependency>

+			<dependency>

+				<groupId>org.hamcrest</groupId>

+				<artifactId>hamcrest-all</artifactId>

+				<version>1.1</version>

+				<scope>test</scope>

+			</dependency>

+			<dependency>

+				<groupId>org.eclipse.uomo</groupId>

+				<artifactId>org.eclipse.uomo.core</artifactId>

+				<version>${uomo-version}</version>

+			</dependency>

+			<dependency>

+				<groupId>com.ibm.icu</groupId>

+				<artifactId>icu4j</artifactId>

+				<version>${icu4j-version}</version>

+			</dependency>

+			<dependency>

+				<groupId>org.eclipse</groupId>

+				<artifactId>osgi</artifactId>

+				<version>3.5.0.v20090520</version>

+			</dependency>

+

+		</dependencies>

+	</dependencyManagement>

+

 </project>
\ No newline at end of file
diff --git a/examples/ucum/.project b/examples/ucum/.project
index f426fbf..3dd2821 100644
--- a/examples/ucum/.project
+++ b/examples/ucum/.project
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ucum</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>ucum</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/examples/ucum/org.eclipse.uomo.examples.ucum.console/.classpath b/examples/ucum/org.eclipse.uomo.examples.ucum.console/.classpath
index 658fc2e..f32149e 100644
--- a/examples/ucum/org.eclipse.uomo.examples.ucum.console/.classpath
+++ b/examples/ucum/org.eclipse.uomo.examples.ucum.console/.classpath
@@ -1,31 +1,31 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" output="target/classes" path="src/main/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/examples/ucum/org.eclipse.uomo.examples.ucum.console/.project b/examples/ucum/org.eclipse.uomo.examples.ucum.console/.project
index 48f218d..151f97b 100644
--- a/examples/ucum/org.eclipse.uomo.examples.ucum.console/.project
+++ b/examples/ucum/org.eclipse.uomo.examples.ucum.console/.project
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.examples.ucum.console</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.examples.ucum.console</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/examples/ucum/org.eclipse.uomo.examples.ucum.console/pom.xml b/examples/ucum/org.eclipse.uomo.examples.ucum.console/pom.xml
index c949598..35fa906 100644
--- a/examples/ucum/org.eclipse.uomo.examples.ucum.console/pom.xml
+++ b/examples/ucum/org.eclipse.uomo.examples.ucum.console/pom.xml
@@ -1,52 +1,52 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.eclipse.uomo.examples.ucum</groupId>
-		<artifactId>org.eclipse.uomo.examples.ucum</artifactId>
-		<version>0.7.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>org.eclipse.uomo.examples.ucum.console</artifactId>
-	<name>UOMo UCUM Console Examples</name>
-
-	<dependencies>
-		<dependency>
-			<groupId>com.ibm.icu</groupId>
-			<artifactId>icu4j</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse</groupId>
-			<artifactId>osgi</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.unitsofmeasurement</groupId>
-			<artifactId>unit-api</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.hamcrest</groupId>
-			<artifactId>hamcrest-all</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.uomo</groupId>
-			<artifactId>org.eclipse.uomo.core</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.uomo</groupId>
-			<artifactId>org.eclipse.uomo.units</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.uomo</groupId>
-			<artifactId>org.eclipse.uomo.util</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.uomo</groupId>
-			<artifactId>org.eclipse.uomo.ucum</artifactId>
-		</dependency>
-	</dependencies>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<groupId>org.eclipse.uomo.examples.ucum</groupId>

+		<artifactId>org.eclipse.uomo.examples.ucum</artifactId>

+		<version>0.7.0-SNAPSHOT</version>

+	</parent>

+	<artifactId>org.eclipse.uomo.examples.ucum.console</artifactId>

+	<name>UOMo UCUM Console Examples</name>

+

+	<dependencies>

+		<dependency>

+			<groupId>com.ibm.icu</groupId>

+			<artifactId>icu4j</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse</groupId>

+			<artifactId>osgi</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.unitsofmeasurement</groupId>

+			<artifactId>unit-api</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>junit</groupId>

+			<artifactId>junit</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.hamcrest</groupId>

+			<artifactId>hamcrest-all</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.uomo</groupId>

+			<artifactId>org.eclipse.uomo.core</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.uomo</groupId>

+			<artifactId>org.eclipse.uomo.units</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.uomo</groupId>

+			<artifactId>org.eclipse.uomo.util</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.uomo</groupId>

+			<artifactId>org.eclipse.uomo.ucum</artifactId>

+		</dependency>

+	</dependencies>

 </project>
\ No newline at end of file
diff --git a/examples/ucum/org.eclipse.uomo.examples.ucum.console/src/main/java/org/eclipse/uomo/examples/ucum/console/UcumDemo.java b/examples/ucum/org.eclipse.uomo.examples.ucum.console/src/main/java/org/eclipse/uomo/examples/ucum/console/UcumDemo.java
index 2119b70..ab0f165 100644
--- a/examples/ucum/org.eclipse.uomo.examples.ucum.console/src/main/java/org/eclipse/uomo/examples/ucum/console/UcumDemo.java
+++ b/examples/ucum/org.eclipse.uomo.examples.ucum.console/src/main/java/org/eclipse/uomo/examples/ucum/console/UcumDemo.java
@@ -1,31 +1,31 @@
-package org.eclipse.uomo.examples.ucum.console;
-
-import java.math.BigDecimal;
-
-import org.eclipse.uomo.ucum.UcumService;
-import org.eclipse.uomo.ucum.impl.UcumEssenceService;
-
-public class UcumDemo {
-
-	public static void main(String[] args) {
-		final UcumService service = new UcumEssenceService(UcumDemo.class
-				.getClassLoader().getResourceAsStream("ucum-essence.xml"));
-		System.out.println("16 OZ to LBs    = "
-				+ service.convert(new BigDecimal(16), "[oz_av]", "[lb_av]"));
-		System.out.println("16 LBs to OZ    = "
-				+ service.convert(new BigDecimal(16), "[lb_av]", "[oz_av]"));
-		System.out.println("1 LB to Grams  = "
-				+ service.convert(new BigDecimal(1), "[lb_av]", "g"));
-		System.out.println("16 Oz to Grams  = "
-				+ service.convert(new BigDecimal(16), "[oz_av]", "g"));
-		System.out.println("1 Oz to Grams   = "
-				+ service.convert(new BigDecimal(1), "[oz_av]", "g"));
-		
-		System.out.println("1 Oz TR to Grams   = "
-				+ service.convert(new BigDecimal(1), "[oz_tr]", "g"));
-		
-		System.out.println("1 kg to Grams   = "
-				+ service.convert(new BigDecimal(1), "kg", "g"));
-	}
-
-}
+package org.eclipse.uomo.examples.ucum.console;

+

+import java.math.BigDecimal;

+

+import org.eclipse.uomo.ucum.UcumService;

+import org.eclipse.uomo.ucum.impl.UcumEssenceService;

+

+public class UcumDemo {

+

+	public static void main(String[] args) {

+		final UcumService service = new UcumEssenceService(UcumDemo.class

+				.getClassLoader().getResourceAsStream("ucum-essence.xml"));

+		System.out.println("16 OZ to LBs    = "

+				+ service.convert(new BigDecimal(16), "[oz_av]", "[lb_av]"));

+		System.out.println("16 LBs to OZ    = "

+				+ service.convert(new BigDecimal(16), "[lb_av]", "[oz_av]"));

+		System.out.println("1 LB to Grams  = "

+				+ service.convert(new BigDecimal(1), "[lb_av]", "g"));

+		System.out.println("16 Oz to Grams  = "

+				+ service.convert(new BigDecimal(16), "[oz_av]", "g"));

+		System.out.println("1 Oz to Grams   = "

+				+ service.convert(new BigDecimal(1), "[oz_av]", "g"));

+		

+		System.out.println("1 Oz TR to Grams   = "

+				+ service.convert(new BigDecimal(1), "[oz_tr]", "g"));

+		

+		System.out.println("1 kg to Grams   = "

+				+ service.convert(new BigDecimal(1), "kg", "g"));

+	}

+

+}

diff --git a/examples/ucum/org.eclipse.uomo.examples.ucum.console/src/main/resources/ucum-essence.xml b/examples/ucum/org.eclipse.uomo.examples.ucum.console/src/main/resources/ucum-essence.xml
index c6c6c9b..d45b615 100644
--- a/examples/ucum/org.eclipse.uomo.examples.ucum.console/src/main/resources/ucum-essence.xml
+++ b/examples/ucum/org.eclipse.uomo.examples.ucum.console/src/main/resources/ucum-essence.xml
@@ -1,2062 +1,2062 @@
-<?xml version="1.0" encoding="ascii"?>
-<root xmlns="http://unitsofmeasure.org/ucum-essence" version="1.9"
-      revision="$Revision: 16410 $"
-      revision-date="$Date: 2013-10-21 21:24:43 -0700 (Mon, 21 Oct 2013) $">
-   <prefix xmlns="" Code="Y" CODE="YA">
-      <name>yotta</name>
-      <printSymbol>Y</printSymbol>
-      <value value="1e24">1 &#215; 10<sup>24</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="Z" CODE="ZA">
-      <name>zetta</name>
-      <printSymbol>Z</printSymbol>
-      <value value="1e21">1 &#215; 10<sup>21</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="E" CODE="EX">
-      <name>exa</name>
-      <printSymbol>E</printSymbol>
-      <value value="1e18">1 &#215; 10<sup>18</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="P" CODE="PT">
-      <name>peta</name>
-      <printSymbol>P</printSymbol>
-      <value value="1e15">1 &#215; 10<sup>15</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="T" CODE="TR">
-      <name>tera</name>
-      <printSymbol>T</printSymbol>
-      <value value="1e12">1 &#215; 10<sup>12</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="G" CODE="GA">
-      <name>giga</name>
-      <printSymbol>G</printSymbol>
-      <value value="1e9">1 &#215; 10<sup>9</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="M" CODE="MA">
-      <name>mega</name>
-      <printSymbol>M</printSymbol>
-      <value value="1e6">1 &#215; 10<sup>6</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="k" CODE="K">
-      <name>kilo</name>
-      <printSymbol>k</printSymbol>
-      <value value="1e3">1 &#215; 10<sup>3</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="h" CODE="H">
-      <name>hecto</name>
-      <printSymbol>h</printSymbol>
-      <value value="1e2">1 &#215; 10<sup>2</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="da" CODE="DA">
-      <name>deka</name>
-      <printSymbol>da</printSymbol>
-      <value value="1e1">1 &#215; 10<sup>1</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="d" CODE="D">
-      <name>deci</name>
-      <printSymbol>d</printSymbol>
-      <value value="1e-1">1 &#215; 10<sup>-1</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="c" CODE="C">
-      <name>centi</name>
-      <printSymbol>c</printSymbol>
-      <value value="1e-2">1 &#215; 10<sup>-2</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="m" CODE="M">
-      <name>milli</name>
-      <printSymbol>m</printSymbol>
-      <value value="1e-3">1 &#215; 10<sup>-3</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="u" CODE="U">
-      <name>micro</name>
-      <printSymbol>&#956;</printSymbol>
-      <value value="1e-6">1 &#215; 10<sup>-6</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="n" CODE="N">
-      <name>nano</name>
-      <printSymbol>n</printSymbol>
-      <value value="1e-9">1 &#215; 10<sup>-9</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="p" CODE="P">
-      <name>pico</name>
-      <printSymbol>p</printSymbol>
-      <value value="1e-12">1 &#215; 10<sup>-12</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="f" CODE="F">
-      <name>femto</name>
-      <printSymbol>f</printSymbol>
-      <value value="1e-15">1 &#215; 10<sup>-15</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="a" CODE="A">
-      <name>atto</name>
-      <printSymbol>a</printSymbol>
-      <value value="1e-18">1 &#215; 10<sup>-18</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="z" CODE="ZO">
-      <name>zepto</name>
-      <printSymbol>z</printSymbol>
-      <value value="1e-21">1 &#215; 10<sup>-21</sup>
-      </value>
-   </prefix>
-   <prefix xmlns="" Code="y" CODE="YO">
-      <name>yocto</name>
-      <printSymbol>y</printSymbol>
-      <value value="1e-24">1 &#215; 10<sup>-24</sup>
-      </value>
-   </prefix>
-   <base-unit xmlns="" Code="m" CODE="M" dim="L">
-      <name>meter</name>
-      <printSymbol>m</printSymbol>
-      <property>length</property>
-   </base-unit>
-   <base-unit xmlns="" Code="s" CODE="S" dim="T">
-      <name>second</name>
-      <printSymbol>s</printSymbol>
-      <property>time</property>
-   </base-unit>
-   <base-unit xmlns="" Code="g" CODE="G" dim="M">
-      <name>gram</name>
-      <printSymbol>g</printSymbol>
-      <property>mass</property>
-   </base-unit>
-   <base-unit xmlns="" Code="rad" CODE="RAD" dim="A">
-      <name>radian</name>
-      <printSymbol>rad</printSymbol>
-      <property>plane angle</property>
-   </base-unit>
-   <base-unit xmlns="" Code="K" CODE="K" dim="C">
-      <name>Kelvin</name>
-      <printSymbol>K</printSymbol>
-      <property>temperature</property>
-   </base-unit>
-   <base-unit xmlns="" Code="C" CODE="C" dim="Q">
-      <name>Coulomb</name>
-      <printSymbol>C</printSymbol>
-      <property>electric charge</property>
-   </base-unit>
-   <base-unit xmlns="" Code="cd" CODE="CD" dim="F">
-      <name>candela</name>
-      <printSymbol>cd</printSymbol>
-      <property>luminous intensity</property>
-   </base-unit>
-   <unit xmlns="" Code="10*" CODE="10*" isMetric="no" class="dimless">
-      <name>the number ten for arbitrary powers</name>
-      <printSymbol>10</printSymbol>
-      <property>number</property>
-      <value Unit="1" UNIT="1" value="10">10</value>
-   </unit>
-   <unit xmlns="" Code="10^" CODE="10^" isMetric="no" class="dimless">
-      <name>the number ten for arbitrary powers</name>
-      <printSymbol>10</printSymbol>
-      <property>number</property>
-      <value Unit="1" UNIT="1" value="10">10</value>
-   </unit>
-   <unit xmlns="" Code="[pi]" CODE="[PI]" isMetric="no" class="dimless">
-      <name>the number pi</name>
-      <printSymbol>&#960;</printSymbol>
-      <property>number</property>
-      <value Unit="1" UNIT="1"
-             value="3.1415926535897932384626433832795028841971693993751058209749445923">&#960;</value>
-   </unit>
-   <unit xmlns="" Code="%" CODE="%" isMetric="no" class="dimless">
-      <name>percent</name>
-      <printSymbol>%</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-2" UNIT="10*-2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ppth]" CODE="[PPTH]" isMetric="no" class="dimless">
-      <name>parts per thousand</name>
-      <printSymbol>ppth</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-3" UNIT="10*-3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ppm]" CODE="[PPM]" isMetric="no" class="dimless">
-      <name>parts per million</name>
-      <printSymbol>ppm</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-6" UNIT="10*-6" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ppb]" CODE="[PPB]" isMetric="no" class="dimless">
-      <name>parts per billion</name>
-      <printSymbol>ppb</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-9" UNIT="10*-9" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pptr]" CODE="[PPTR]" isMetric="no" class="dimless">
-      <name>parts per trillion</name>
-      <printSymbol>pptr</printSymbol>
-      <property>fraction</property>
-      <value Unit="10*-12" UNIT="10*-12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="mol" CODE="MOL" isMetric="yes" class="si">
-      <name>mole</name>
-      <printSymbol>mol</printSymbol>
-      <property>amount of substance</property>
-      <value Unit="10*23" UNIT="10*23" value="6.0221367">6.0221367</value>
-   </unit>
-   <unit xmlns="" Code="sr" CODE="SR" isMetric="yes" class="si">
-      <name>steradian</name>
-      <printSymbol>sr</printSymbol>
-      <property>solid angle</property>
-      <value Unit="rad2" UNIT="RAD2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Hz" CODE="HZ" isMetric="yes" class="si">
-      <name>Hertz</name>
-      <printSymbol>Hz</printSymbol>
-      <property>frequency</property>
-      <value Unit="s-1" UNIT="S-1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="N" CODE="N" isMetric="yes" class="si">
-      <name>Newton</name>
-      <printSymbol>N</printSymbol>
-      <property>force</property>
-      <value Unit="kg.m/s2" UNIT="KG.M/S2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Pa" CODE="PAL" isMetric="yes" class="si">
-      <name>Pascal</name>
-      <printSymbol>Pa</printSymbol>
-      <property>pressure</property>
-      <value Unit="N/m2" UNIT="N/M2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="J" CODE="J" isMetric="yes" class="si">
-      <name>Joule</name>
-      <printSymbol>J</printSymbol>
-      <property>energy</property>
-      <value Unit="N.m" UNIT="N.M" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="W" CODE="W" isMetric="yes" class="si">
-      <name>Watt</name>
-      <printSymbol>W</printSymbol>
-      <property>power</property>
-      <value Unit="J/s" UNIT="J/S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="A" CODE="A" isMetric="yes" class="si">
-      <name>Amp&#232;re</name>
-      <printSymbol>A</printSymbol>
-      <property>electric current</property>
-      <value Unit="C/s" UNIT="C/S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="V" CODE="V" isMetric="yes" class="si">
-      <name>Volt</name>
-      <printSymbol>V</printSymbol>
-      <property>electric potential</property>
-      <value Unit="J/C" UNIT="J/C" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="F" CODE="F" isMetric="yes" class="si">
-      <name>Farad</name>
-      <printSymbol>F</printSymbol>
-      <property>electric capacitance</property>
-      <value Unit="C/V" UNIT="C/V" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Ohm" CODE="OHM" isMetric="yes" class="si">
-      <name>Ohm</name>
-      <printSymbol>&#937;</printSymbol>
-      <property>electric resistance</property>
-      <value Unit="V/A" UNIT="V/A" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="S" CODE="SIE" isMetric="yes" class="si">
-      <name>Siemens</name>
-      <printSymbol>S</printSymbol>
-      <property>electric conductance</property>
-      <value Unit="Ohm-1" UNIT="OHM-1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Wb" CODE="WB" isMetric="yes" class="si">
-      <name>Weber</name>
-      <printSymbol>Wb</printSymbol>
-      <property>magentic flux</property>
-      <value Unit="V.s" UNIT="V.S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Cel" CODE="CEL" isMetric="yes" isSpecial="yes" class="si">
-      <name>degree Celsius</name>
-      <printSymbol>&#176;C</printSymbol>
-      <property>temperature</property>
-      <value Unit="cel(1 K)" UNIT="CEL(1 K)">
-         <function name="Cel" value="1" Unit="K"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="T" CODE="T" isMetric="yes" class="si">
-      <name>Tesla</name>
-      <printSymbol>T</printSymbol>
-      <property>magnetic flux density</property>
-      <value Unit="Wb/m2" UNIT="WB/M2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="H" CODE="H" isMetric="yes" class="si">
-      <name>Henry</name>
-      <printSymbol>H</printSymbol>
-      <property>inductance</property>
-      <value Unit="Wb/A" UNIT="WB/A" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="lm" CODE="LM" isMetric="yes" class="si">
-      <name>lumen</name>
-      <printSymbol>lm</printSymbol>
-      <property>luminous flux</property>
-      <value Unit="cd.sr" UNIT="CD.SR" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="lx" CODE="LX" isMetric="yes" class="si">
-      <name>lux</name>
-      <printSymbol>lx</printSymbol>
-      <property>illuminance</property>
-      <value Unit="lm/m2" UNIT="LM/M2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Bq" CODE="BQ" isMetric="yes" class="si">
-      <name>Becquerel</name>
-      <printSymbol>Bq</printSymbol>
-      <property>radioactivity</property>
-      <value Unit="s-1" UNIT="S-1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Gy" CODE="GY" isMetric="yes" class="si">
-      <name>Gray</name>
-      <printSymbol>Gy</printSymbol>
-      <property>energy dose</property>
-      <value Unit="J/kg" UNIT="J/KG" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Sv" CODE="SV" isMetric="yes" class="si">
-      <name>Sievert</name>
-      <printSymbol>Sv</printSymbol>
-      <property>dose equivalent</property>
-      <value Unit="J/kg" UNIT="J/KG" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="gon" CODE="GON" isMetric="no" class="iso1000">
-      <name>gon</name>
-      <name>grade</name>
-      <printSymbol>&#9633;<sup>g</sup>
-      </printSymbol>
-      <property>plane angle</property>
-      <value Unit="deg" UNIT="DEG" value="0.9">0.9</value>
-   </unit>
-   <unit xmlns="" Code="deg" CODE="DEG" isMetric="no" class="iso1000">
-      <name>degree</name>
-      <printSymbol>&#176;</printSymbol>
-      <property>plane angle</property>
-      <value Unit="[pi].rad/360" UNIT="[PI].RAD/360" value="2">2</value>
-   </unit>
-   <unit xmlns="" Code="'" CODE="'" isMetric="no" class="iso1000">
-      <name>minute</name>
-      <printSymbol>'</printSymbol>
-      <property>plane angle</property>
-      <value Unit="deg/60" UNIT="DEG/60" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="''" CODE="''" isMetric="no" class="iso1000">
-      <name>second</name>
-      <printSymbol>''</printSymbol>
-      <property>plane angle</property>
-      <value Unit="'/60" UNIT="'/60" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="l" CODE="L" isMetric="yes" class="iso1000">
-      <name>liter</name>
-      <printSymbol>l</printSymbol>
-      <property>volume</property>
-      <value Unit="dm3" UNIT="DM3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="L" isMetric="yes" class="iso1000">
-      <name>liter</name>
-      <printSymbol>L</printSymbol>
-      <property>volume</property>
-      <value Unit="l" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="ar" CODE="AR" isMetric="yes" class="iso1000">
-      <name>are</name>
-      <printSymbol>a</printSymbol>
-      <property>area</property>
-      <value Unit="m2" UNIT="M2" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="min" CODE="MIN" isMetric="no" class="iso1000">
-      <name>minute</name>
-      <printSymbol>min</printSymbol>
-      <property>time</property>
-      <value Unit="s" UNIT="S" value="60">60</value>
-   </unit>
-   <unit xmlns="" Code="h" CODE="HR" isMetric="no" class="iso1000">
-      <name>hour</name>
-      <printSymbol>h</printSymbol>
-      <property>time</property>
-      <value Unit="min" UNIT="MIN" value="60">60</value>
-   </unit>
-   <unit xmlns="" Code="d" CODE="D" isMetric="no" class="iso1000">
-      <name>day</name>
-      <printSymbol>d</printSymbol>
-      <property>time</property>
-      <value Unit="h" UNIT="HR" value="24">24</value>
-   </unit>
-   <unit xmlns="" Code="a_t" CODE="ANN_T" isMetric="no" class="iso1000">
-      <name>tropical year</name>
-      <printSymbol>a<sub>t</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="365.24219">365.24219</value>
-   </unit>
-   <unit xmlns="" Code="a_j" CODE="ANN_J" isMetric="no" class="iso1000">
-      <name>mean Julian year</name>
-      <printSymbol>a<sub>j</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="365.25">365.25</value>
-   </unit>
-   <unit xmlns="" Code="a_g" CODE="ANN_G" isMetric="no" class="iso1000">
-      <name>mean Gregorian year</name>
-      <printSymbol>a<sub>g</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="365.2425">365.2425</value>
-   </unit>
-   <unit xmlns="" Code="a" CODE="ANN" isMetric="no" class="iso1000">
-      <name>year</name>
-      <printSymbol>a</printSymbol>
-      <property>time</property>
-      <value Unit="a_j" UNIT="ANN_J" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="wk" CODE="WK" isMetric="no" class="iso1000">
-      <name>week</name>
-      <printSymbol>wk</printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="7">7</value>
-   </unit>
-   <unit xmlns="" Code="mo_s" CODE="MO_S" isMetric="no" class="iso1000">
-      <name>synodal month</name>
-      <printSymbol>mo<sub>s</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="d" UNIT="D" value="29.53059">29.53059</value>
-   </unit>
-   <unit xmlns="" Code="mo_j" CODE="MO_J" isMetric="no" class="iso1000">
-      <name>mean Julian month</name>
-      <printSymbol>mo<sub>j</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="a_j/12" UNIT="ANN_J/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="mo_g" CODE="MO_G" isMetric="no" class="iso1000">
-      <name>mean Gregorian month</name>
-      <printSymbol>mo<sub>g</sub>
-      </printSymbol>
-      <property>time</property>
-      <value Unit="a_g/12" UNIT="ANN_G/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="mo" CODE="MO" isMetric="no" class="iso1000">
-      <name>month</name>
-      <printSymbol>mo</printSymbol>
-      <property>time</property>
-      <value Unit="mo_j" UNIT="MO_J" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="t" CODE="TNE" isMetric="yes" class="iso1000">
-      <name>tonne</name>
-      <printSymbol>t</printSymbol>
-      <property>mass</property>
-      <value Unit="kg" UNIT="KG" value="1e3">1 &#215; 10<sup>3</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="bar" CODE="BAR" isMetric="yes" class="iso1000">
-      <name>bar</name>
-      <printSymbol>bar</printSymbol>
-      <property>pressure</property>
-      <value Unit="Pa" UNIT="PAL" value="1e5">1 &#215; 10<sup>5</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="u" CODE="AMU" isMetric="yes" class="iso1000">
-      <name>unified atomic mass unit</name>
-      <printSymbol>u</printSymbol>
-      <property>mass</property>
-      <value Unit="g" UNIT="G" value="1.6605402e-24">1.6605402 &#215; 10<sup>-24</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="eV" CODE="EV" isMetric="yes" class="iso1000">
-      <name>electronvolt</name>
-      <printSymbol>eV</printSymbol>
-      <property>energy</property>
-      <value Unit="[e].V" UNIT="[E].V" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="AU" CODE="ASU" isMetric="no" class="iso1000">
-      <name>astronomic unit</name>
-      <printSymbol>AU</printSymbol>
-      <property>length</property>
-      <value Unit="Mm" UNIT="MAM" value="149597.870691">149597.870691</value>
-   </unit>
-   <unit xmlns="" Code="pc" CODE="PRS" isMetric="yes" class="iso1000">
-      <name>parsec</name>
-      <printSymbol>pc</printSymbol>
-      <property>length</property>
-      <value Unit="m" UNIT="M" value="3.085678e16">3.085678 &#215; 10<sup>16</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[c]" CODE="[C]" isMetric="yes" class="const">
-      <name>velocity of light</name>
-      <printSymbol>
-         <i>c</i>
-      </printSymbol>
-      <property>velocity</property>
-      <value Unit="m/s" UNIT="M/S" value="299792458">299792458</value>
-   </unit>
-   <unit xmlns="" Code="[h]" CODE="[H]" isMetric="yes" class="const">
-      <name>Planck constant</name>
-      <printSymbol>
-         <i>h</i>
-      </printSymbol>
-      <property>action</property>
-      <value Unit="J.s" UNIT="J.S" value="6.6260755e-24">6.6260755 &#215; 10<sup>-24</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[k]" CODE="[K]" isMetric="yes" class="const">
-      <name>Boltzmann constant</name>
-      <printSymbol>
-         <i>k</i>
-      </printSymbol>
-      <property>(unclassified)</property>
-      <value Unit="J/K" UNIT="J/K" value="1.380658e-23">1.380658 &#215; 10<sup>-23</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[eps_0]" CODE="[EPS_0]" isMetric="yes" class="const">
-      <name>permittivity of vacuum</name>
-      <printSymbol>
-         <i>&#949;<sub>
-               <r>0</r>
-            </sub>
-         </i>
-      </printSymbol>
-      <property>electric permittivity</property>
-      <value Unit="F/m" UNIT="F/M" value="8.854187817e-12">8.854187817 &#215; 10<sup>-12</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[mu_0]" CODE="[MU_0]" isMetric="yes" class="const">
-      <name>permeability of vacuum</name>
-      <printSymbol>
-         <i>&#956;<sub>
-               <r>0</r>
-            </sub>
-         </i>
-      </printSymbol>
-      <property>magnetic permeability</property>
-      <value Unit="4.[pi].10*-7.N/A2" UNIT="4.[PI].10*-7.N/A2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[e]" CODE="[E]" isMetric="yes" class="const">
-      <name>elementary charge</name>
-      <printSymbol>
-         <i>e</i>
-      </printSymbol>
-      <property>electric charge</property>
-      <value Unit="C" UNIT="C" value="1.60217733e-19">1.60217733 &#215; 10<sup>-19</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[m_e]" CODE="[M_E]" isMetric="yes" class="const">
-      <name>electron mass</name>
-      <printSymbol>
-         <i>m<sub>
-               <r>e</r>
-            </sub>
-         </i>
-      </printSymbol>
-      <property>mass</property>
-      <value Unit="g" UNIT="g" value="9.1093897e-28">9.1093897 &#215; 10<sup>-28</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[m_p]" CODE="[M_P]" isMetric="yes" class="const">
-      <name>proton mass</name>
-      <printSymbol>
-         <i>m<sub>
-               <r>p</r>
-            </sub>
-         </i>
-      </printSymbol>
-      <property>mass</property>
-      <value Unit="g" UNIT="g" value="1.6726231e-24">1.6726231 &#215; 10<sup>-24</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[G]" CODE="[GC]" isMetric="yes" class="const">
-      <name>Newtonian constant of gravitation</name>
-      <printSymbol>
-         <i>G</i>
-      </printSymbol>
-      <property>(unclassified)</property>
-      <value Unit="m3.kg-1.s-2" UNIT="M3.KG-1.S-2" value="6.67259e-11">6.67259 &#215; 10<sup>-11</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[g]" CODE="[G]" isMetric="yes" class="const">
-      <name>standard acceleration of free fall</name>
-      <printSymbol>
-         <i>g<sub>n</sub>
-         </i>
-      </printSymbol>
-      <property>acceleration</property>
-      <value Unit="m/s2" UNIT="M/S2" value="980665e-5">9.80665</value>
-   </unit>
-   <unit xmlns="" Code="atm" CODE="ATM" isMetric="no" class="const">
-      <name>standard atmosphere</name>
-      <printSymbol>atm</printSymbol>
-      <property>pressure</property>
-      <value Unit="Pa" UNIT="PAL" value="101325">101325</value>
-   </unit>
-   <unit xmlns="" Code="[ly]" CODE="[LY]" isMetric="yes" class="const">
-      <name>light-year</name>
-      <printSymbol>l.y.</printSymbol>
-      <property>length</property>
-      <value Unit="[c].a_j" UNIT="[C].ANN_J" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="gf" CODE="GF" isMetric="yes" class="const">
-      <name>gram-force</name>
-      <printSymbol>gf</printSymbol>
-      <property>force</property>
-      <value Unit="g.[g]" UNIT="G.[G]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[lbf_av]" CODE="[LBF_AV]" isMetric="no" class="const">
-      <name>pound force</name>
-      <printSymbol>lbf</printSymbol>
-      <property>force</property>
-      <value Unit="[lb_av].[g]" UNIT="[LB_AV].[G]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Ky" CODE="KY" isMetric="yes" class="cgs">
-      <name>Kayser</name>
-      <printSymbol>K</printSymbol>
-      <property>lineic number</property>
-      <value Unit="cm-1" UNIT="CM-1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Gal" CODE="GL" isMetric="yes" class="cgs">
-      <name>Gal</name>
-      <printSymbol>Gal</printSymbol>
-      <property>acceleration</property>
-      <value Unit="cm/s2" UNIT="CM/S2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="dyn" CODE="DYN" isMetric="yes" class="cgs">
-      <name>dyne</name>
-      <printSymbol>dyn</printSymbol>
-      <property>force</property>
-      <value Unit="g.cm/s2" UNIT="G.CM/S2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="erg" CODE="ERG" isMetric="yes" class="cgs">
-      <name>erg</name>
-      <printSymbol>erg</printSymbol>
-      <property>energy</property>
-      <value Unit="dyn.cm" UNIT="DYN.CM" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="P" CODE="P" isMetric="yes" class="cgs">
-      <name>Poise</name>
-      <printSymbol>P</printSymbol>
-      <property>dynamic viscosity</property>
-      <value Unit="dyn.s/cm2" UNIT="DYN.S/CM2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Bi" CODE="BI" isMetric="yes" class="cgs">
-      <name>Biot</name>
-      <printSymbol>Bi</printSymbol>
-      <property>electric current</property>
-      <value Unit="A" UNIT="A" value="10">10</value>
-   </unit>
-   <unit xmlns="" Code="St" CODE="ST" isMetric="yes" class="cgs">
-      <name>Stokes</name>
-      <printSymbol>St</printSymbol>
-      <property>kinematic viscosity</property>
-      <value Unit="cm2/s" UNIT="CM2/S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Mx" CODE="MX" isMetric="yes" class="cgs">
-      <name>Maxwell</name>
-      <printSymbol>Mx</printSymbol>
-      <property>flux of magnetic induction</property>
-      <value Unit="Wb" UNIT="WB" value="1e-8">1 &#215; 10<sup>-8</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="G" CODE="GS" isMetric="yes" class="cgs">
-      <name>Gauss</name>
-      <printSymbol>Gs</printSymbol>
-      <property>magnetic flux density</property>
-      <value Unit="T" UNIT="T" value="1e-4">1 &#215; 10<sup>-4</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="Oe" CODE="OE" isMetric="yes" class="cgs">
-      <name>Oersted</name>
-      <printSymbol>Oe</printSymbol>
-      <property>magnetic field intensity</property>
-      <value Unit="/[pi].A/m" UNIT="/[PI].A/M" value="250">250</value>
-   </unit>
-   <unit xmlns="" Code="Gb" CODE="GB" isMetric="yes" class="cgs">
-      <name>Gilbert</name>
-      <printSymbol>Gb</printSymbol>
-      <property>magnetic tension</property>
-      <value Unit="Oe.cm" UNIT="OE.CM" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="sb" CODE="SB" isMetric="yes" class="cgs">
-      <name>stilb</name>
-      <printSymbol>sb</printSymbol>
-      <property>lum. intensity density</property>
-      <value Unit="cd/cm2" UNIT="CD/CM2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Lmb" CODE="LMB" isMetric="yes" class="cgs">
-      <name>Lambert</name>
-      <printSymbol>L</printSymbol>
-      <property>brightness</property>
-      <value Unit="cd/cm2/[pi]" UNIT="CD/CM2/[PI]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="ph" CODE="PHT" isMetric="yes" class="cgs">
-      <name>phot</name>
-      <printSymbol>ph</printSymbol>
-      <property>illuminance</property>
-      <value Unit="lx" UNIT="LX" value="1e-4">1 &#215; 10<sup>-4</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="Ci" CODE="CI" isMetric="yes" class="cgs">
-      <name>Curie</name>
-      <printSymbol>Ci</printSymbol>
-      <property>radioactivity</property>
-      <value Unit="Bq" UNIT="BQ" value="37e9">3.7 &#215; 10<sup>10</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="R" CODE="ROE" isMetric="yes" class="cgs">
-      <name>Roentgen</name>
-      <printSymbol>R</printSymbol>
-      <property>ion dose</property>
-      <value Unit="C/kg" UNIT="C/KG" value="2.58e-4">2.58 &#215; 10<sup>-4</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="RAD" CODE="[RAD]" isMetric="yes" class="cgs">
-      <name>radiation absorbed dose</name>
-      <printSymbol>RAD</printSymbol>
-      <property>energy dose</property>
-      <value Unit="erg/g" UNIT="ERG/G" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="REM" CODE="[REM]" isMetric="yes" class="cgs">
-      <name>radiation equivalent man</name>
-      <printSymbol>REM</printSymbol>
-      <property>dose equivalent</property>
-      <value Unit="RAD" UNIT="[RAD]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[in_i]" CODE="[IN_I]" isMetric="no" class="intcust">
-      <name>inch</name>
-      <printSymbol>in</printSymbol>
-      <property>length</property>
-      <value Unit="cm" UNIT="CM" value="254e-2">2.54</value>
-   </unit>
-   <unit xmlns="" Code="[ft_i]" CODE="[FT_I]" isMetric="no" class="intcust">
-      <name>foot</name>
-      <printSymbol>ft</printSymbol>
-      <property>length</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[yd_i]" CODE="[YD_I]" isMetric="no" class="intcust">
-      <name>yard</name>
-      <printSymbol>yd</printSymbol>
-      <property>length</property>
-      <value Unit="[ft_i]" UNIT="[FT_I]" value="3">3</value>
-   </unit>
-   <unit xmlns="" Code="[mi_i]" CODE="[MI_I]" isMetric="no" class="intcust">
-      <name>statute mile</name>
-      <printSymbol>mi</printSymbol>
-      <property>length</property>
-      <value Unit="[ft_i]" UNIT="[FT_I]" value="5280">5280</value>
-   </unit>
-   <unit xmlns="" Code="[fth_i]" CODE="[FTH_I]" isMetric="no" class="intcust">
-      <name>fathom</name>
-      <printSymbol>fth</printSymbol>
-      <property>depth of water</property>
-      <value Unit="[ft_i]" UNIT="[FT_I]" value="6">6</value>
-   </unit>
-   <unit xmlns="" Code="[nmi_i]" CODE="[NMI_I]" isMetric="no" class="intcust">
-      <name>nautical mile</name>
-      <printSymbol>n.mi</printSymbol>
-      <property>length</property>
-      <value Unit="m" UNIT="M" value="1852">1852</value>
-   </unit>
-   <unit xmlns="" Code="[kn_i]" CODE="[KN_I]" isMetric="no" class="intcust">
-      <name>knot</name>
-      <printSymbol>knot</printSymbol>
-      <property>velocity</property>
-      <value Unit="[nmi_i]/h" UNIT="[NMI_I]/H" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[sin_i]" CODE="[SIN_I]" isMetric="no" class="intcust">
-      <name>square inch</name>
-      <property>area</property>
-      <value Unit="[in_i]2" UNIT="[IN_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[sft_i]" CODE="[SFT_I]" isMetric="no" class="intcust">
-      <name>square foot</name>
-      <property>area</property>
-      <value Unit="[ft_i]2" UNIT="[FT_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[syd_i]" CODE="[SYD_I]" isMetric="no" class="intcust">
-      <name>square yard</name>
-      <property>area</property>
-      <value Unit="[yd_i]2" UNIT="[YD_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cin_i]" CODE="[CIN_I]" isMetric="no" class="intcust">
-      <name>cubic inch</name>
-      <property>volume</property>
-      <value Unit="[in_i]3" UNIT="[IN_I]3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cft_i]" CODE="[CFT_I]" isMetric="no" class="intcust">
-      <name>cubic foot</name>
-      <property>volume</property>
-      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cyd_i]" CODE="[CYD_I]" isMetric="no" class="intcust">
-      <name>cubic yard</name>
-      <printSymbol>cu.yd</printSymbol>
-      <property>volume</property>
-      <value Unit="[yd_i]3" UNIT="[YD_I]3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[bf_i]" CODE="[BF_I]" isMetric="no" class="intcust">
-      <name>board foot</name>
-      <property>volume</property>
-      <value Unit="[in_i]3" UNIT="[IN_I]3" value="144">144</value>
-   </unit>
-   <unit xmlns="" Code="[cr_i]" CODE="[CR_I]" isMetric="no" class="intcust">
-      <name>cord</name>
-      <property>volume</property>
-      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="128">128</value>
-   </unit>
-   <unit xmlns="" Code="[mil_i]" CODE="[MIL_I]" isMetric="no" class="intcust">
-      <name>mil</name>
-      <printSymbol>mil</printSymbol>
-      <property>length</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="1e-3">1 &#215; 10<sup>-3</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[cml_i]" CODE="[CML_I]" isMetric="no" class="intcust">
-      <name>circular mil</name>
-      <printSymbol>circ.mil</printSymbol>
-      <property>area</property>
-      <value Unit="[pi]/4.[mil_i]2" UNIT="[PI]/4.[MIL_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hd_i]" CODE="[HD_I]" isMetric="no" class="intcust">
-      <name>hand</name>
-      <printSymbol>hd</printSymbol>
-      <property>height of horses</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[ft_us]" CODE="[FT_US]" isMetric="no" class="us-lengths">
-      <name>foot</name>
-      <printSymbol>ft<sub>us</sub>
-      </printSymbol>
-      <property>length</property>
-      <value Unit="m/3937" UNIT="M/3937" value="1200">1200</value>
-   </unit>
-   <unit xmlns="" Code="[yd_us]" CODE="[YD_US]" isMetric="no" class="us-lengths">
-      <name>yard</name>
-      <property>length</property>
-      <value Unit="[ft_us]" UNIT="[FT_US]" value="3">3</value>
-   </unit>
-   <unit xmlns="" Code="[in_us]" CODE="[IN_US]" isMetric="no" class="us-lengths">
-      <name>inch</name>
-      <property>length</property>
-      <value Unit="[ft_us]/12" UNIT="[FT_US]/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[rd_us]" CODE="[RD_US]" isMetric="no" class="us-lengths">
-      <name>rod</name>
-      <property>length</property>
-      <value Unit="[ft_us]" UNIT="[FT_US]" value="16.5">16.5</value>
-   </unit>
-   <unit xmlns="" Code="[ch_us]" CODE="[CH_US]" isMetric="no" class="us-lengths">
-      <name>Gunter's chain</name>
-      <name>Surveyor's chain</name>
-      <property>length</property>
-      <value Unit="[rd_us]" UNIT="[RD_US]" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[lk_us]" CODE="[LK_US]" isMetric="no" class="us-lengths">
-      <name>link for Gunter's chain</name>
-      <property>length</property>
-      <value Unit="[ch_us]/100" UNIT="[CH_US]/100" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[rch_us]" CODE="[RCH_US]" isMetric="no" class="us-lengths">
-      <name>Ramden's chain</name>
-      <name>Engineer's chain</name>
-      <property>length</property>
-      <value Unit="[ft_us]" UNIT="[FT_US]" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="[rlk_us]" CODE="[RLK_US]" isMetric="no" class="us-lengths">
-      <name>link for Ramden's chain</name>
-      <property>length</property>
-      <value Unit="[rch_us]/100" UNIT="[RCH_US]/100" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[fth_us]" CODE="[FTH_US]" isMetric="no" class="us-lengths">
-      <name>fathom</name>
-      <property>length</property>
-      <value Unit="[ft_us]" UNIT="[FT_US]" value="6">6</value>
-   </unit>
-   <unit xmlns="" Code="[fur_us]" CODE="[FUR_US]" isMetric="no" class="us-lengths">
-      <name>furlong</name>
-      <property>length</property>
-      <value Unit="[rd_us]" UNIT="[RD_US]" value="40">40</value>
-   </unit>
-   <unit xmlns="" Code="[mi_us]" CODE="[MI_US]" isMetric="no" class="us-lengths">
-      <name>mile</name>
-      <property>length</property>
-      <value Unit="[fur_us]" UNIT="[FUR_US]" value="8">8</value>
-   </unit>
-   <unit xmlns="" Code="[acr_us]" CODE="[ACR_US]" isMetric="no" class="us-lengths">
-      <name>acre</name>
-      <property>area</property>
-      <value Unit="[rd_us]2" UNIT="[RD_US]2" value="160">160</value>
-   </unit>
-   <unit xmlns="" Code="[srd_us]" CODE="[SRD_US]" isMetric="no" class="us-lengths">
-      <name>square rod</name>
-      <property>area</property>
-      <value Unit="[rd_us]2" UNIT="[RD_US]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[smi_us]" CODE="[SMI_US]" isMetric="no" class="us-lengths">
-      <name>square mile</name>
-      <property>area</property>
-      <value Unit="[mi_us]2" UNIT="[MI_US]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[sct]" CODE="[SCT]" isMetric="no" class="us-lengths">
-      <name>section</name>
-      <property>area</property>
-      <value Unit="[mi_us]2" UNIT="[MI_US]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[twp]" CODE="[TWP]" isMetric="no" class="us-lengths">
-      <name>township</name>
-      <property>area</property>
-      <value Unit="[sct]" UNIT="[SCT]" value="36">36</value>
-   </unit>
-   <unit xmlns="" Code="[mil_us]" CODE="[MIL_US]" isMetric="no" class="us-lengths">
-      <name>mil</name>
-      <property>length</property>
-      <value Unit="[in_us]" UNIT="[IN_US]" value="1e-3">1 &#215; 10<sup>-3</sup>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[in_br]" CODE="[IN_BR]" isMetric="no" class="brit-length">
-      <name>inch</name>
-      <property>length</property>
-      <value Unit="cm" UNIT="CM" value="2.539998">2.539998</value>
-   </unit>
-   <unit xmlns="" Code="[ft_br]" CODE="[FT_BR]" isMetric="no" class="brit-length">
-      <name>foot</name>
-      <property>length</property>
-      <value Unit="[in_br]" UNIT="[IN_BR]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[rd_br]" CODE="[RD_BR]" isMetric="no" class="brit-length">
-      <name>rod</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="16.5">16.5</value>
-   </unit>
-   <unit xmlns="" Code="[ch_br]" CODE="[CH_BR]" isMetric="no" class="brit-length">
-      <name>Gunter's chain</name>
-      <property>length</property>
-      <value Unit="[rd_br]" UNIT="[RD_BR]" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[lk_br]" CODE="[LK_BR]" isMetric="no" class="brit-length">
-      <name>link for Gunter's chain</name>
-      <property>length</property>
-      <value Unit="[ch_br]/100" UNIT="[CH_BR]/100" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[fth_br]" CODE="[FTH_BR]" isMetric="no" class="brit-length">
-      <name>fathom</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="6">6</value>
-   </unit>
-   <unit xmlns="" Code="[pc_br]" CODE="[PC_BR]" isMetric="no" class="brit-length">
-      <name>pace</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="2.5">2.5</value>
-   </unit>
-   <unit xmlns="" Code="[yd_br]" CODE="[YD_BR]" isMetric="no" class="brit-length">
-      <name>yard</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="3">3</value>
-   </unit>
-   <unit xmlns="" Code="[mi_br]" CODE="[MI_BR]" isMetric="no" class="brit-length">
-      <name>mile</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="5280">5280</value>
-   </unit>
-   <unit xmlns="" Code="[nmi_br]" CODE="[NMI_BR]" isMetric="no" class="brit-length">
-      <name>nautical mile</name>
-      <property>length</property>
-      <value Unit="[ft_br]" UNIT="[FT_BR]" value="6080">6080</value>
-   </unit>
-   <unit xmlns="" Code="[kn_br]" CODE="[KN_BR]" isMetric="no" class="brit-length">
-      <name>knot</name>
-      <property>velocity</property>
-      <value Unit="[nmi_br]/h" UNIT="[NMI_BR]/H" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[acr_br]" CODE="[ACR_BR]" isMetric="no" class="brit-length">
-      <name>acre</name>
-      <property>area</property>
-      <value Unit="[yd_br]2" UNIT="[YD_BR]2" value="4840">4840</value>
-   </unit>
-   <unit xmlns="" Code="[gal_us]" CODE="[GAL_US]" isMetric="no" class="us-volumes">
-      <name>Queen&#160;Anne's wine gallon</name>
-      <property>fluid volume</property>
-      <value Unit="[in_i]3" UNIT="[IN_I]3" value="231">231</value>
-   </unit>
-   <unit xmlns="" Code="[bbl_us]" CODE="[BBL_US]" isMetric="no" class="us-volumes">
-      <name>barrel</name>
-      <property>fluid volume</property>
-      <value Unit="[gal_us]" UNIT="[GAL_US]" value="42">42</value>
-   </unit>
-   <unit xmlns="" Code="[qt_us]" CODE="[QT_US]" isMetric="no" class="us-volumes">
-      <name>quart</name>
-      <property>fluid volume</property>
-      <value Unit="[gal_us]/4" UNIT="[GAL_US]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pt_us]" CODE="[PT_US]" isMetric="no" class="us-volumes">
-      <name>pint</name>
-      <property>fluid volume</property>
-      <value Unit="[qt_us]/2" UNIT="[QT_US]/2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[gil_us]" CODE="[GIL_US]" isMetric="no" class="us-volumes">
-      <name>gill</name>
-      <property>fluid volume</property>
-      <value Unit="[pt_us]/4" UNIT="[PT_US]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[foz_us]" CODE="[FOZ_US]" isMetric="no" class="us-volumes">
-      <name>fluid ounce</name>
-      <printSymbol>oz fl</printSymbol>
-      <property>fluid volume</property>
-      <value Unit="[gil_us]/4" UNIT="[GIL_US]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[fdr_us]" CODE="[FDR_US]" isMetric="no" class="us-volumes">
-      <name>fluid dram</name>
-      <property>fluid volume</property>
-      <value Unit="[foz_us]/8" UNIT="[FOZ_US]/8" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[min_us]" CODE="[MIN_US]" isMetric="no" class="us-volumes">
-      <name>minim</name>
-      <property>fluid volume</property>
-      <value Unit="[fdr_us]/60" UNIT="[FDR_US]/60" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[crd_us]" CODE="[CRD_US]" isMetric="no" class="us-volumes">
-      <name>cord</name>
-      <property>fluid volume</property>
-      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="128">128</value>
-   </unit>
-   <unit xmlns="" Code="[bu_us]" CODE="[BU_US]" isMetric="no" class="us-volumes">
-      <name>bushel</name>
-      <property>dry volume</property>
-      <value Unit="[in_i]3" UNIT="[IN_I]3" value="2150.42">2150.42</value>
-   </unit>
-   <unit xmlns="" Code="[gal_wi]" CODE="[GAL_WI]" isMetric="no" class="us-volumes">
-      <name>historical winchester gallon</name>
-      <property>dry volume</property>
-      <value Unit="[bu_us]/8" UNIT="[BU_US]/8" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pk_us]" CODE="[PK_US]" isMetric="no" class="us-volumes">
-      <name>peck</name>
-      <property>dry volume</property>
-      <value Unit="[bu_us]/4" UNIT="[BU_US]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[dqt_us]" CODE="[DQT_US]" isMetric="no" class="us-volumes">
-      <name>dry quart</name>
-      <property>dry volume</property>
-      <value Unit="[pk_us]/8" UNIT="[PK_US]/8" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[dpt_us]" CODE="[DPT_US]" isMetric="no" class="us-volumes">
-      <name>dry pint</name>
-      <property>dry volume</property>
-      <value Unit="[dqt_us]/2" UNIT="[DQT_US]/2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[tbs_us]" CODE="[TBS_US]" isMetric="no" class="us-volumes">
-      <name>tablespoon</name>
-      <property>volume</property>
-      <value Unit="[foz_us]/2" UNIT="[FOZ_US]/2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[tsp_us]" CODE="[TSP_US]" isMetric="no" class="us-volumes">
-      <name>teaspoon</name>
-      <property>volume</property>
-      <value Unit="[tbs_us]/3" UNIT="[TBS_US]/3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cup_us]" CODE="[CUP_US]" isMetric="no" class="us-volumes">
-      <name>cup</name>
-      <property>volume</property>
-      <value Unit="[tbs_us]" UNIT="[TBS_US]" value="16">16</value>
-   </unit>
-   <unit xmlns="" Code="[foz_m]" CODE="[FOZ_M]" isMetric="no" class="us-volumes">
-      <name>metric fluid ounce</name>
-      <printSymbol>oz fl</printSymbol>
-      <property>fluid volume</property>
-      <value Unit="mL" UNIT="ML" value="30">30</value>
-   </unit>
-   <unit xmlns="" Code="[cup_m]" CODE="[CUP_M]" isMetric="no" class="us-volumes">
-      <name>metric cup</name>
-      <property>volume</property>
-      <value Unit="mL" UNIT="ML" value="240">240</value>
-   </unit>
-   <unit xmlns="" Code="[tsp_m]" CODE="[TSP_M]" isMetric="no" class="us-volumes">
-      <name>metric teaspoon</name>
-      <property>volume</property>
-      <value Unit="mL" UNIT="mL" value="5">5</value>
-   </unit>
-   <unit xmlns="" Code="[tbs_m]" CODE="[TBS_M]" isMetric="no" class="us-volumes">
-      <name>metric tablespoon</name>
-      <property>volume</property>
-      <value Unit="mL" UNIT="mL" value="15">15</value>
-   </unit>
-   <unit xmlns="" Code="[gal_br]" CODE="[GAL_BR]" isMetric="no" class="brit-volumes">
-      <name>gallon</name>
-      <property>volume</property>
-      <value Unit="l" UNIT="L" value="4.54609">4.54609</value>
-   </unit>
-   <unit xmlns="" Code="[pk_br]" CODE="[PK_BR]" isMetric="no" class="brit-volumes">
-      <name>peck</name>
-      <property>volume</property>
-      <value Unit="[gal_br]" UNIT="[GAL_BR]" value="2">2</value>
-   </unit>
-   <unit xmlns="" Code="[bu_br]" CODE="[BU_BR]" isMetric="no" class="brit-volumes">
-      <name>bushel</name>
-      <property>volume</property>
-      <value Unit="[pk_br]" UNIT="[PK_BR]" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[qt_br]" CODE="[QT_BR]" isMetric="no" class="brit-volumes">
-      <name>quart</name>
-      <property>volume</property>
-      <value Unit="[gal_br]/4" UNIT="[GAL_BR]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pt_br]" CODE="[PT_BR]" isMetric="no" class="brit-volumes">
-      <name>pint</name>
-      <property>volume</property>
-      <value Unit="[qt_br]/2" UNIT="[QT_BR]/2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[gil_br]" CODE="[GIL_BR]" isMetric="no" class="brit-volumes">
-      <name>gill</name>
-      <property>volume</property>
-      <value Unit="[pt_br]/4" UNIT="[PT_BR]/4" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[foz_br]" CODE="[FOZ_BR]" isMetric="no" class="brit-volumes">
-      <name>fluid ounce</name>
-      <property>volume</property>
-      <value Unit="[gil_br]/5" UNIT="[GIL_BR]/5" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[fdr_br]" CODE="[FDR_BR]" isMetric="no" class="brit-volumes">
-      <name>fluid dram</name>
-      <property>volume</property>
-      <value Unit="[foz_br]/8" UNIT="[FOZ_BR]/8" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[min_br]" CODE="[MIN_BR]" isMetric="no" class="brit-volumes">
-      <name>minim</name>
-      <property>volume</property>
-      <value Unit="[fdr_br]/60" UNIT="[FDR_BR]/60" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[gr]" CODE="[GR]" isMetric="no" class="avoirdupois">
-      <name>grain</name>
-      <property>mass</property>
-      <value Unit="mg" UNIT="MG" value="64.79891">64.79891</value>
-   </unit>
-   <unit xmlns="" Code="[lb_av]" CODE="[LB_AV]" isMetric="no" class="avoirdupois">
-      <name>pound</name>
-      <printSymbol>lb</printSymbol>
-      <property>mass</property>
-      <value Unit="[gr]" UNIT="[GR]" value="7000">7000</value>
-   </unit>
-   <unit xmlns="" Code="[oz_av]" CODE="[OZ_AV]" isMetric="no" class="avoirdupois">
-      <name>ounce</name>
-      <printSymbol>oz</printSymbol>
-      <property>mass</property>
-      <value Unit="[lb_av]/16" UNIT="[LB_AV]/16" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[dr_av]" CODE="[DR_AV]" isMetric="no" class="avoirdupois">
-      <name>dram</name>
-      <property>mass</property>
-      <value Unit="[oz_av]/16" UNIT="[OZ_AV]/16" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[scwt_av]" CODE="[SCWT_AV]" isMetric="no" class="avoirdupois">
-      <name>short hundredweight</name>
-      <name>U.S. hundredweight</name>
-      <property>mass</property>
-      <value Unit="[lb_av]" UNIT="[LB_AV]" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="[lcwt_av]" CODE="[LCWT_AV]" isMetric="no" class="avoirdupois">
-      <name>long hunderdweight</name>
-      <name>British hundredweight</name>
-      <property>mass</property>
-      <value Unit="[lb_av]" UNIT="[LB_AV]" value="112">112</value>
-   </unit>
-   <unit xmlns="" Code="[ston_av]" CODE="[STON_AV]" isMetric="no" class="avoirdupois">
-      <name>short ton</name>
-      <name>U.S. ton</name>
-      <property>mass</property>
-      <value Unit="[scwt_av]" UNIT="[SCWT_AV]" value="20">20</value>
-   </unit>
-   <unit xmlns="" Code="[lton_av]" CODE="[LTON_AV]" isMetric="no" class="avoirdupois">
-      <name>long ton</name>
-      <name>British ton</name>
-      <property>mass</property>
-      <value Unit="[lcwt_av]" UNIT="[LCWT_AV]" value="20">20</value>
-   </unit>
-   <unit xmlns="" Code="[stone_av]" CODE="[STONE_AV]" isMetric="no" class="avoirdupois">
-      <name>stone</name>
-      <name>British stone</name>
-      <property>mass</property>
-      <value Unit="[lb_av]" UNIT="[LB_AV]" value="14">14</value>
-   </unit>
-   <unit xmlns="" Code="[pwt_tr]" CODE="[PWT_TR]" isMetric="no" class="troy">
-      <name>pennyweight</name>
-      <property>mass</property>
-      <value Unit="[gr]" UNIT="[GR]" value="24">24</value>
-   </unit>
-   <unit xmlns="" Code="[oz_tr]" CODE="[OZ_TR]" isMetric="no" class="troy">
-      <name>ounce</name>
-      <property>mass</property>
-      <value Unit="[pwt_tr]" UNIT="[PWT_TR]" value="20">20</value>
-   </unit>
-   <unit xmlns="" Code="[lb_tr]" CODE="[LB_TR]" isMetric="no" class="troy">
-      <name>pound</name>
-      <property>mass</property>
-      <value Unit="[oz_tr]" UNIT="[OZ_TR]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[sc_ap]" CODE="[SC_AP]" isMetric="no" class="apoth">
-      <name>scruple</name>
-      <property>mass</property>
-      <value Unit="[gr]" UNIT="[GR]" value="20">20</value>
-   </unit>
-   <unit xmlns="" Code="[dr_ap]" CODE="[DR_AP]" isMetric="no" class="apoth">
-      <name>dram</name>
-      <name>drachm</name>
-      <property>mass</property>
-      <value Unit="[sc_ap]" UNIT="[SC_AP]" value="3">3</value>
-   </unit>
-   <unit xmlns="" Code="[oz_ap]" CODE="[OZ_AP]" isMetric="no" class="apoth">
-      <name>ounce</name>
-      <property>mass</property>
-      <value Unit="[dr_ap]" UNIT="[DR_AP]" value="8">8</value>
-   </unit>
-   <unit xmlns="" Code="[lb_ap]" CODE="[LB_AP]" isMetric="no" class="apoth">
-      <name>pound</name>
-      <property>mass</property>
-      <value Unit="[oz_ap]" UNIT="[OZ_AP]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[oz_m]" CODE="[OZ_M]" isMetric="no" class="apoth">
-      <name>metric ounce</name>
-      <property>mass</property>
-      <value Unit="g" UNIT="g" value="28">28</value>
-   </unit>
-   <unit xmlns="" Code="[lne]" CODE="[LNE]" isMetric="no" class="typeset">
-      <name>line</name>
-      <property>length</property>
-      <value Unit="[in_i]/12" UNIT="[IN_I]/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pnt]" CODE="[PNT]" isMetric="no" class="typeset">
-      <name>point</name>
-      <property>length</property>
-      <value Unit="[lne]/6" UNIT="[LNE]/6" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pca]" CODE="[PCA]" isMetric="no" class="typeset">
-      <name>pica</name>
-      <property>length</property>
-      <value Unit="[pnt]" UNIT="[PNT]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[pnt_pr]" CODE="[PNT_PR]" isMetric="no" class="typeset">
-      <name>Printer's point</name>
-      <property>length</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="0.013837">0.013837</value>
-   </unit>
-   <unit xmlns="" Code="[pca_pr]" CODE="[PCA_PR]" isMetric="no" class="typeset">
-      <name>Printer's pica</name>
-      <property>length</property>
-      <value Unit="[pnt_pr]" UNIT="[PNT_PR]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[pied]" CODE="[PIED]" isMetric="no" class="typeset">
-      <name>pied</name>
-      <name>French foot</name>
-      <property>length</property>
-      <value Unit="cm" UNIT="CM" value="32.48">32.48</value>
-   </unit>
-   <unit xmlns="" Code="[pouce]" CODE="[POUCE]" isMetric="no" class="typeset">
-      <name>pouce</name>
-      <name>French inch</name>
-      <property>length</property>
-      <value Unit="[pied]/12" UNIT="[PIED]/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ligne]" CODE="[LIGNE]" isMetric="no" class="typeset">
-      <name>ligne</name>
-      <name>French line</name>
-      <property>length</property>
-      <value Unit="[pouce]/12" UNIT="[POUCE]/12" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[didot]" CODE="[DIDOT]" isMetric="no" class="typeset">
-      <name>didot</name>
-      <name>Didot's point</name>
-      <property>length</property>
-      <value Unit="[ligne]/6" UNIT="[LIGNE]/6" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[cicero]" CODE="[CICERO]" isMetric="no" class="typeset">
-      <name>cicero</name>
-      <name>Didot's pica</name>
-      <property>length</property>
-      <value Unit="[didot]" UNIT="[DIDOT]" value="12">12</value>
-   </unit>
-   <unit xmlns="" Code="[degF]" CODE="[DEGF]" isMetric="no" isSpecial="yes" class="heat">
-      <name>degree Fahrenheit</name>
-      <printSymbol>&#176;F</printSymbol>
-      <property>temperature</property>
-      <value Unit="degf(5 K/9)" UNIT="DEGF(5 K/9)">
-         <function name="degF" value="5" Unit="K/9"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[degR]" CODE="[degR]" isMetric="no" class="heat">
-      <name>degree Rankine</name>
-      <printSymbol>&#176;R</printSymbol>
-      <property>temperature</property>
-      <value value="5" Unit="K/9" UNIT="K/9">5</value>
-   </unit>
-   <unit xmlns="" Code="cal_[15]" CODE="CAL_[15]" isMetric="yes" class="heat">
-      <name>calorie at 15&#160;&#176;C</name>
-      <printSymbol>cal<sub>15&#176;C</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.18580">4.18580</value>
-   </unit>
-   <unit xmlns="" Code="cal_[20]" CODE="CAL_[20]" isMetric="yes" class="heat">
-      <name>calorie at 20&#160;&#176;C</name>
-      <printSymbol>cal<sub>20&#176;C</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.18190">4.18190</value>
-   </unit>
-   <unit xmlns="" Code="cal_m" CODE="CAL_M" isMetric="yes" class="heat">
-      <name>mean calorie</name>
-      <printSymbol>cal<sub>m</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.19002">4.19002</value>
-   </unit>
-   <unit xmlns="" Code="cal_IT" CODE="CAL_IT" isMetric="yes" class="heat">
-      <name>international table calorie</name>
-      <printSymbol>cal<sub>IT</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.1868">4.1868</value>
-   </unit>
-   <unit xmlns="" Code="cal_th" CODE="CAL_TH" isMetric="yes" class="heat">
-      <name>thermochemical calorie</name>
-      <printSymbol>cal<sub>th</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="J" UNIT="J" value="4.184">4.184</value>
-   </unit>
-   <unit xmlns="" Code="cal" CODE="CAL" isMetric="yes" class="heat">
-      <name>calorie</name>
-      <printSymbol>cal</printSymbol>
-      <property>energy</property>
-      <value Unit="cal_th" UNIT="CAL_TH" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Cal]" CODE="[CAL]" isMetric="no" class="heat">
-      <name>nutrition label Calories</name>
-      <printSymbol>Cal</printSymbol>
-      <property>energy</property>
-      <value Unit="kcal_th" UNIT="KCAL_TH" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_39]" CODE="[BTU_39]" isMetric="no" class="heat">
-      <name>British thermal unit at 39&#160;&#176;F</name>
-      <printSymbol>Btu<sub>39&#176;F</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05967">1.05967</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_59]" CODE="[BTU_59]" isMetric="no" class="heat">
-      <name>British thermal unit at 59&#160;&#176;F</name>
-      <printSymbol>Btu<sub>59&#176;F</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05480">1.05480</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_60]" CODE="[BTU_60]" isMetric="no" class="heat">
-      <name>British thermal unit at 60&#160;&#176;F</name>
-      <printSymbol>Btu<sub>60&#176;F</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05468">1.05468</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_m]" CODE="[BTU_M]" isMetric="no" class="heat">
-      <name>mean British thermal unit</name>
-      <printSymbol>Btu<sub>m</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05587">1.05587</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_IT]" CODE="[BTU_IT]" isMetric="no" class="heat">
-      <name>international table British thermal unit</name>
-      <printSymbol>Btu<sub>IT</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.05505585262">1.05505585262</value>
-   </unit>
-   <unit xmlns="" Code="[Btu_th]" CODE="[BTU_TH]" isMetric="no" class="heat">
-      <name>thermochemical British thermal unit</name>
-      <printSymbol>Btu<sub>th</sub>
-      </printSymbol>
-      <property>energy</property>
-      <value Unit="kJ" UNIT="kJ" value="1.054350">1.054350</value>
-   </unit>
-   <unit xmlns="" Code="[Btu]" CODE="[BTU]" isMetric="no" class="heat">
-      <name>British thermal unit</name>
-      <printSymbol>btu</printSymbol>
-      <property>energy</property>
-      <value Unit="[Btu_th]" UNIT="[BTU_TH]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[HP]" CODE="[HP]" isMetric="no" class="heat">
-      <name>horsepower</name>
-      <property>power</property>
-      <value Unit="[ft_i].[lbf_av]/s" UNIT="[FT_I].[LBF_AV]/S" value="550">550</value>
-   </unit>
-   <unit xmlns="" Code="tex" CODE="TEX" isMetric="yes" class="heat">
-      <name>tex</name>
-      <printSymbol>tex</printSymbol>
-      <property>linear mass density (of textile thread)</property>
-      <value value="1" Unit="g/km" UNIT="G/KM">1</value>
-   </unit>
-   <unit xmlns="" Code="[den]" CODE="[DEN]" isMetric="no" class="heat">
-      <name>Denier</name>
-      <printSymbol>den</printSymbol>
-      <property>linear mass density (of textile thread)</property>
-      <value value="1" Unit="g/9/km" UNIT="G/9/KM">1</value>
-   </unit>
-   <unit xmlns="" Code="m[H2O]" CODE="M[H2O]" isMetric="yes" class="clinical">
-      <name>meter of water column</name>
-      <printSymbol>m&#160;H<sub>
-            <r>2</r>
-         </sub>O</printSymbol>
-      <property>pressure</property>
-      <value Unit="kPa" UNIT="KPAL" value="980665e-5">9.80665</value>
-   </unit>
-   <unit xmlns="" Code="m[Hg]" CODE="M[HG]" isMetric="yes" class="clinical">
-      <name>meter of mercury column</name>
-      <printSymbol>m&#160;Hg</printSymbol>
-      <property>pressure</property>
-      <value Unit="kPa" UNIT="KPAL" value="133.3220">133.3220</value>
-   </unit>
-   <unit xmlns="" Code="[in_i'H2O]" CODE="[IN_I'H2O]" isMetric="no" class="clinical">
-      <name>inch of water column</name>
-      <printSymbol>in&#160;H<sub>
-            <r>2</r>
-         </sub>O</printSymbol>
-      <property>pressure</property>
-      <value Unit="m[H2O].[in_i]/m" UNIT="M[H2O].[IN_I]/M" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[in_i'Hg]" CODE="[IN_I'HG]" isMetric="no" class="clinical">
-      <name>inch of mercury column</name>
-      <printSymbol>in&#160;Hg</printSymbol>
-      <property>pressure</property>
-      <value Unit="m[Hg].[in_i]/m" UNIT="M[HG].[IN_I]/M" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[PRU]" CODE="[PRU]" isMetric="no" class="clinical">
-      <name>peripheral vascular resistance unit</name>
-      <printSymbol>P.R.U.</printSymbol>
-      <property>fluid resistance</property>
-      <value Unit="mm[Hg].s/ml" UNIT="MM[HG].S/ML" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[wood'U]" CODE="[WOOD'U]" isMetric="no" class="clinical">
-      <name>Wood unit</name>
-      <printSymbol>Wood U.</printSymbol>
-      <property>fluid resistance</property>
-      <value Unit="mm[Hg].min/L" UNIT="MM[HG].MIN/L" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[diop]" CODE="[DIOP]" isMetric="no" class="clinical">
-      <name>diopter</name>
-      <printSymbol>dpt</printSymbol>
-      <property>refraction of a lens</property>
-      <value Unit="/m" UNIT="/M" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[p'diop]" CODE="[P'DIOP]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>prism diopter</name>
-      <printSymbol>PD</printSymbol>
-      <property>refraction of a prism</property>
-      <value Unit="100tan(1 rad)" UNIT="100TAN(1 RAD)">
-         <function name="tanTimes100" value="1" Unit="deg"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="%[slope]" CODE="%[SLOPE]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>percent of slope</name>
-      <printSymbol>%</printSymbol>
-      <property>slope</property>
-      <value Unit="100tan(1 rad)" UNIT="100TAN(1 RAD)">
-         <function name="100tan" value="1" Unit="deg"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[mesh_i]" CODE="[MESH_I]" isMetric="no" class="clinical">
-      <name>mesh</name>
-      <property>lineic number</property>
-      <value Unit="/[in_i]" UNIT="/[IN_I]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Ch]" CODE="[CH]" isMetric="no" class="clinical">
-      <name>Charri&#232;re</name>
-      <name>french</name>
-      <printSymbol>Ch</printSymbol>
-      <property>gauge of catheters</property>
-      <value Unit="mm/3" UNIT="MM/3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[drp]" CODE="[DRP]" isMetric="no" class="clinical">
-      <name>drop</name>
-      <printSymbol>drp</printSymbol>
-      <property>volume</property>
-      <value Unit="ml/20" UNIT="ML/20" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hnsf'U]" CODE="[HNSF'U]" isMetric="no" class="clinical">
-      <name>Hounsfield unit</name>
-      <printSymbol>HF</printSymbol>
-      <property>x-ray attenuation</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[MET]" CODE="[MET]" isMetric="no" class="clinical">
-      <name>metabolic equivalent</name>
-      <printSymbol>MET</printSymbol>
-      <property>metabolic cost of physical activity</property>
-      <value Unit="mL/min/kg" UNIT="ML/MIN/KG" value="3.5">3.5</value>
-   </unit>
-   <unit xmlns="" Code="[hp'_X]" CODE="[HP'_X]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>homeopathic potency of decimal series (retired)</name>
-      <printSymbol>X</printSymbol>
-      <property>homeopathic potency (retired)</property>
-      <value Unit="hpX(1 1)" UNIT="HPX(1 1)">
-         <function name="hpX" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[hp'_C]" CODE="[HP'_C]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>homeopathic potency of centesimal series (retired)</name>
-      <printSymbol>C</printSymbol>
-      <property>homeopathic potency (retired)</property>
-      <value Unit="hpC(1 1)" UNIT="HPC(1 1)">
-         <function name="hpC" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[hp'_M]" CODE="[HP'_M]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>homeopathic potency of millesimal series (retired)</name>
-      <printSymbol>M</printSymbol>
-      <property>homeopathic potency (retired)</property>
-      <value Unit="hpM(1 1)" UNIT="HPM(1 1)">
-         <function name="hpM" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[hp'_Q]" CODE="[HP'_Q]" isMetric="no" isSpecial="yes"
-         class="clinical">
-      <name>homeopathic potency of quintamillesimal series (retired)</name>
-      <printSymbol>Q</printSymbol>
-      <property>homeopathic potency (retired)</property>
-      <value Unit="hpQ(1 1)" UNIT="HPQ(1 1)">
-         <function name="hpQ" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="[hp_X]" CODE="[HP_X]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of decimal hahnemannian series</name>
-      <printSymbol>X</printSymbol>
-      <property>homeopathic potency (Hahnemann)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hp_C]" CODE="[HP_C]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of centesimal hahnemannian series</name>
-      <printSymbol>C</printSymbol>
-      <property>homeopathic potency (Hahnemann)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hp_M]" CODE="[HP_M]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of millesimal hahnemannian series</name>
-      <printSymbol>M</printSymbol>
-      <property>homeopathic potency (Hahnemann)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[hp_Q]" CODE="[HP_Q]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of quintamillesimal hahnemannian series</name>
-      <printSymbol>Q</printSymbol>
-      <property>homeopathic potency (Hahnemann)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[kp_X]" CODE="[KP_X]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of decimal korsakovian series</name>
-      <printSymbol>X</printSymbol>
-      <property>homeopathic potency (Korsakov)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[kp_C]" CODE="[KP_C]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of centesimal korsakovian series</name>
-      <printSymbol>C</printSymbol>
-      <property>homeopathic potency (Korsakov)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[kp_M]" CODE="[KP_M]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of millesimal korsakovian series</name>
-      <printSymbol>M</printSymbol>
-      <property>homeopathic potency (Korsakov)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[kp_Q]" CODE="[KP_Q]" isMetric="no" isArbitrary="yes"
-         class="clinical">
-      <name>homeopathic potency of quintamillesimal korsakovian series</name>
-      <printSymbol>Q</printSymbol>
-      <property>homeopathic potency (Korsakov)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="eq" CODE="EQ" isMetric="yes" class="chemical">
-      <name>equivalents</name>
-      <printSymbol>eq</printSymbol>
-      <property>amount of substance</property>
-      <value Unit="mol" UNIT="MOL" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="osm" CODE="OSM" isMetric="yes" class="chemical">
-      <name>osmole</name>
-      <printSymbol>osm</printSymbol>
-      <property>amount of substance (dissolved particles)</property>
-      <value Unit="mol" UNIT="MOL" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[pH]" CODE="[PH]" isMetric="no" isSpecial="yes" class="chemical">
-      <name>pH</name>
-      <printSymbol>pH</printSymbol>
-      <property>acidity</property>
-      <value Unit="pH(1 mol/l)" UNIT="PH(1 MOL/L)">
-         <function name="pH" value="1" Unit="mol/l"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="g%" CODE="G%" isMetric="yes" class="chemical">
-      <name>gram percent</name>
-      <printSymbol>g%</printSymbol>
-      <property>mass concentration</property>
-      <value Unit="g/dl" UNIT="G/DL" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[S]" CODE="[S]" isMetric="no" class="chemical">
-      <name>Svedberg unit</name>
-      <printSymbol>S</printSymbol>
-      <property>sedimentation coefficient</property>
-      <value Unit="10*-13.s" UNIT="10*-13.S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[HPF]" CODE="[HPF]" isMetric="no" class="chemical">
-      <name>high power field</name>
-      <printSymbol>HPF</printSymbol>
-      <property>view area in microscope</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[LPF]" CODE="[LPF]" isMetric="no" class="chemical">
-      <name>low power field</name>
-      <printSymbol>LPF</printSymbol>
-      <property>view area in microscope</property>
-      <value Unit="1" UNIT="1" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="kat" CODE="KAT" isMetric="yes" class="chemical">
-      <name>katal</name>
-      <printSymbol>kat</printSymbol>
-      <property>catalytic activity</property>
-      <value Unit="mol/s" UNIT="MOL/S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="U" CODE="U" isMetric="yes" class="chemical">
-      <name>Unit</name>
-      <printSymbol>U</printSymbol>
-      <property>catalytic activity</property>
-      <value Unit="umol/min" UNIT="UMOL/MIN" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[iU]" CODE="[IU]" isMetric="yes" isArbitrary="yes"
-         class="chemical">
-      <name>international unit</name>
-      <printSymbol>IU</printSymbol>
-      <property>arbitrary</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[IU]" CODE="[IU]" isMetric="yes" isArbitrary="yes"
-         class="chemical">
-      <name>international unit</name>
-      <printSymbol>i.U.</printSymbol>
-      <property>arbitrary</property>
-      <value Unit="[iU]" UNIT="[IU]" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[arb'U]" CODE="[ARB'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>arbitary unit</name>
-      <printSymbol>arb. U</printSymbol>
-      <property>arbitrary</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[USP'U]" CODE="[USP'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>United States Pharmacopeia unit</name>
-      <printSymbol>U.S.P.</printSymbol>
-      <property>arbitrary</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[GPL'U]" CODE="[GPL'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>GPL unit</name>
-      <property>biologic activity of anticardiolipin IgG</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[MPL'U]" CODE="[MPL'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>MPL unit</name>
-      <property>biologic activity of anticardiolipin IgM</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[APL'U]" CODE="[APL'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>APL unit</name>
-      <property>biologic activity of anticardiolipin IgA</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[beth'U]" CODE="[BETH'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Bethesda unit</name>
-      <property>biologic activity of factor VIII inhibitor</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[anti'Xa'U]" CODE="[ANTI'XA'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>anti factor Xa unit</name>
-      <property>biologic activity of factor Xa inhibitor (heparin)</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[todd'U]" CODE="[TODD'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Todd unit</name>
-      <property>biologic activity antistreptolysin O</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[dye'U]" CODE="[DYE'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Dye unit</name>
-      <property>biologic activity of amylase</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[smgy'U]" CODE="[SMGY'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Somogyi unit</name>
-      <property>biologic activity of amylase</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[bdsk'U]" CODE="[BDSK'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Bodansky unit</name>
-      <property>biologic activity of phosphatase</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ka'U]" CODE="[KA'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>King-Armstrong unit</name>
-      <property>biologic activity of phosphatase</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[knk'U]" CODE="[KNK'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Kunkel unit</name>
-      <property>arbitrary biologic activity</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[mclg'U]" CODE="[MCLG'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Mac Lagan unit</name>
-      <property>arbitrary biologic activity</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[tb'U]" CODE="[TB'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>tuberculin unit</name>
-      <property>biologic activity of tuberculin</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[CCID_50]" CODE="[CCID_50]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>50% cell culture infectious dose</name>
-      <printSymbol>CCID<sub>50</sub>
-      </printSymbol>
-      <property>biologic activity (infectivity) of an infectious agent preparation</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[TCID_50]" CODE="[TCID_50]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>50% tissue culture infectious dose</name>
-      <printSymbol>TCID<sub>50</sub>
-      </printSymbol>
-      <property>biologic activity (infectivity) of an infectious agent preparation</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[EID_50]" CODE="[EID_50]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>50% embryo infectious dose</name>
-      <printSymbol>EID<sub>50</sub>
-      </printSymbol>
-      <property>biologic activity (infectivity) of an infectious agent preparation</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[PFU]" CODE="[PFU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>plaque forming units</name>
-      <printSymbol>PFU</printSymbol>
-      <property>amount of an infectious agent</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[FFU]" CODE="[FFU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>focus forming units</name>
-      <printSymbol>FFU</printSymbol>
-      <property>amount of an infectious agent</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[CFU]" CODE="[CFU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>colony forming units</name>
-      <printSymbol>CFU</printSymbol>
-      <property>amount of a proliferating organism</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[BAU]" CODE="[BAU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>bioequivalent allergen unit</name>
-      <printSymbol>BAU</printSymbol>
-      <property>amount of an allergen callibrated through in-vivo testing based on the ID50EAL method of (intradermal dilution for 50mm sum of erythema diameters</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[AU]" CODE="[AU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>allergen unit</name>
-      <printSymbol>AU</printSymbol>
-      <property>procedure defined amount of an allergen using some reference standard</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Amb'a'1'U]" CODE="[AMB'A'1'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>allergen unit for Ambrosia artemisiifolia</name>
-      <printSymbol>Amb a 1 U</printSymbol>
-      <property>procedure defined amount of the major allergen of ragweed.</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[PNU]" CODE="[PNU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>protein nitrogen unit</name>
-      <printSymbol>PNU</printSymbol>
-      <property>procedure defined amount of a protein substance</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[Lf]" CODE="[LF]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Limit of flocculation</name>
-      <printSymbol>Lf</printSymbol>
-      <property>procedure defined amount of an antigen substance</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[D'ag'U]" CODE="[D'AG'U]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>D-antigen unit</name>
-      <printSymbol/>
-      <property>procedure defined amount of a poliomyelitis d-antigen substance</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[FEU]" CODE="[FEU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>fibrinogen equivalent unit</name>
-      <printSymbol/>
-      <property>amount of fibrinogen broken down into the measured d-dimers</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[ELU]" CODE="[ELU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>ELISA unit</name>
-      <printSymbol/>
-      <property>arbitrary ELISA unit</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[EU]" CODE="[EU]" isMetric="no" isArbitrary="yes"
-         class="chemical">
-      <name>Ehrlich unit</name>
-      <printSymbol/>
-      <property>Ehrlich unit</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Np" CODE="NEP" isMetric="yes" isSpecial="yes" class="levels">
-      <name>neper</name>
-      <printSymbol>Np</printSymbol>
-      <property>level</property>
-      <value Unit="ln(1 1)" UNIT="LN(1 1)">
-         <function name="ln" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B" CODE="B" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel</name>
-      <printSymbol>B</printSymbol>
-      <property>level</property>
-      <value Unit="lg(1 1)" UNIT="LG(1 1)">
-         <function name="lg" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[SPL]" CODE="B[SPL]" isMetric="yes" isSpecial="yes"
-         class="levels">
-      <name>bel sound pressure</name>
-      <printSymbol>B(SPL)</printSymbol>
-      <property>pressure level</property>
-      <value Unit="2lg(2 10*-5.Pa)" UNIT="2LG(2 10*-5.PAL)">
-         <function name="lgTimes2" value="2" Unit="10*-5.Pa"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[V]" CODE="B[V]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel volt</name>
-      <printSymbol>B(V)</printSymbol>
-      <property>electric potential level</property>
-      <value Unit="2lg(1 V)" UNIT="2LG(1 V)">
-         <function name="lgTimes2" value="1" Unit="V"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[mV]" CODE="B[MV]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel millivolt</name>
-      <printSymbol>B(mV)</printSymbol>
-      <property>electric potential level</property>
-      <value Unit="2lg(1 mV)" UNIT="2LG(1 MV)">
-         <function name="lgTimes2" value="1" Unit="mV"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[uV]" CODE="B[UV]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel microvolt</name>
-      <printSymbol>B(&#956;V)</printSymbol>
-      <property>electric potential level</property>
-      <value Unit="2lg(1 uV)" UNIT="2LG(1 UV)">
-         <function name="lgTimes2" value="1" Unit="uV"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[10.nV]" CODE="B[10.NV]" isMetric="yes" isSpecial="yes"
-         class="levels">
-      <name>bel 10 nanovolt</name>
-      <printSymbol>B(10 nV)</printSymbol>
-      <property>electric potential level</property>
-      <value Unit="2lg(10 nV)" UNIT="2LG(10 NV)">
-         <function name="lgTimes2" value="10" Unit="nV"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[W]" CODE="B[W]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel watt</name>
-      <printSymbol>B(W)</printSymbol>
-      <property>power level</property>
-      <value Unit="lg(1 W)" UNIT="LG(1 W)">
-         <function name="lg" value="1" Unit="W"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="B[kW]" CODE="B[KW]" isMetric="yes" isSpecial="yes" class="levels">
-      <name>bel kilowatt</name>
-      <printSymbol>B(kW)</printSymbol>
-      <property>power level</property>
-      <value Unit="lg(1 kW)" UNIT="LG(1 KW)">
-         <function name="lg" value="1" Unit="kW"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="st" CODE="STR" isMetric="yes" class="misc">
-      <name>stere</name>
-      <printSymbol>st</printSymbol>
-      <property>volume</property>
-      <value Unit="m3" UNIT="M3" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="Ao" CODE="AO" isMetric="no" class="misc">
-      <name>&#197;ngstr&#246;m</name>
-      <printSymbol>&#197;</printSymbol>
-      <property>length</property>
-      <value Unit="nm" UNIT="NM" value="0.1">0.1</value>
-   </unit>
-   <unit xmlns="" Code="b" CODE="BRN" isMetric="no" class="misc">
-      <name>barn</name>
-      <printSymbol>b</printSymbol>
-      <property>action area</property>
-      <value Unit="fm2" UNIT="FM2" value="100">100</value>
-   </unit>
-   <unit xmlns="" Code="att" CODE="ATT" isMetric="no" class="misc">
-      <name>technical atmosphere</name>
-      <printSymbol>at</printSymbol>
-      <property>pressure</property>
-      <value Unit="kgf/cm2" UNIT="KGF/CM2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="mho" CODE="MHO" isMetric="yes" class="misc">
-      <name>mho</name>
-      <printSymbol>mho</printSymbol>
-      <property>electric conductance</property>
-      <value Unit="S" UNIT="S" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[psi]" CODE="[PSI]" isMetric="no" class="misc">
-      <name>pound per sqare inch</name>
-      <printSymbol>psi</printSymbol>
-      <property>pressure</property>
-      <value Unit="[lbf_av]/[in_i]2" UNIT="[LBF_AV]/[IN_I]2" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="circ" CODE="CIRC" isMetric="no" class="misc">
-      <name>circle</name>
-      <printSymbol>circ</printSymbol>
-      <property>plane angle</property>
-      <value Unit="[pi].rad" UNIT="[PI].RAD" value="2">2</value>
-   </unit>
-   <unit xmlns="" Code="sph" CODE="SPH" isMetric="no" class="misc">
-      <name>spere</name>
-      <printSymbol>sph</printSymbol>
-      <property>solid angle</property>
-      <value Unit="[pi].sr" UNIT="[PI].SR" value="4">4</value>
-   </unit>
-   <unit xmlns="" Code="[car_m]" CODE="[CAR_M]" isMetric="no" class="misc">
-      <name>metric carat</name>
-      <printSymbol>ct<sub>m</sub>
-      </printSymbol>
-      <property>mass</property>
-      <value Unit="g" UNIT="G" value="2e-1">0.2</value>
-   </unit>
-   <unit xmlns="" Code="[car_Au]" CODE="[CAR_AU]" isMetric="no" class="misc">
-      <name>carat of gold alloys</name>
-      <printSymbol>ct<sub>
-            <r>Au</r>
-         </sub>
-      </printSymbol>
-      <property>mass fraction</property>
-      <value Unit="/24" UNIT="/24" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="[smoot]" CODE="[SMOOT]" isMetric="no" class="misc">
-      <name>Smoot</name>
-      <printSymbol/>
-      <property>length</property>
-      <value Unit="[in_i]" UNIT="[IN_I]" value="67">67</value>
-   </unit>
-   <unit xmlns="" Code="bit_s" CODE="BIT_S" isMetric="no" isSpecial="yes"
-         class="infotech">
-      <name>bit</name>
-      <printSymbol>bit<sub>s</sub>
-      </printSymbol>
-      <property>amount of information</property>
-      <value Unit="ld(1 1)" UNIT="ld(1 1)">
-         <function name="ld" value="1" Unit="1"/>
-      </value>
-   </unit>
-   <unit xmlns="" Code="bit" CODE="BIT" isMetric="yes" class="infotech">
-      <name>bit</name>
-      <printSymbol>bit</printSymbol>
-      <property>amount of information</property>
-      <value Unit="1" UNIT="1" value="1">1</value>
-   </unit>
-   <unit xmlns="" Code="By" CODE="BY" isMetric="yes" class="infotech">
-      <name>byte</name>
-      <printSymbol>B</printSymbol>
-      <property>amount of information</property>
-      <value Unit="bit" UNIT="bit" value="8">8</value>
-   </unit>
-   <unit xmlns="" Code="Bd" CODE="BD" isMetric="yes" class="infotech">
-      <name>baud</name>
-      <printSymbol>Bd</printSymbol>
-      <property>signal transmission rate</property>
-      <value Unit="/s" UNIT="/s" value="1">1</value>
-   </unit>
-   <prefix xmlns="" Code="Ki" CODE="KIB">
-      <name>kibi</name>
-      <printSymbol>Ki</printSymbol>
-      <value value="1024">1024</value>
-   </prefix>
-   <prefix xmlns="" Code="Mi" CODE="MIB">
-      <name>mebi</name>
-      <printSymbol>Mi</printSymbol>
-      <value value="1048576">1048576</value>
-   </prefix>
-   <prefix xmlns="" Code="Gi" CODE="GIB">
-      <name>gibi</name>
-      <printSymbol>Gi</printSymbol>
-      <value value="1073741824">1073741824</value>
-   </prefix>
-   <prefix xmlns="" Code="Ti" CODE="TIB">
-      <name>tebi</name>
-      <printSymbol>Ti</printSymbol>
-      <value value="1099511627776">1099511627776</value>
-   </prefix>
+<?xml version="1.0" encoding="ascii"?>

+<root xmlns="http://unitsofmeasure.org/ucum-essence" version="1.9"

+      revision="$Revision: 16410 $"

+      revision-date="$Date: 2013-10-21 21:24:43 -0700 (Mon, 21 Oct 2013) $">

+   <prefix xmlns="" Code="Y" CODE="YA">

+      <name>yotta</name>

+      <printSymbol>Y</printSymbol>

+      <value value="1e24">1 &#215; 10<sup>24</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="Z" CODE="ZA">

+      <name>zetta</name>

+      <printSymbol>Z</printSymbol>

+      <value value="1e21">1 &#215; 10<sup>21</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="E" CODE="EX">

+      <name>exa</name>

+      <printSymbol>E</printSymbol>

+      <value value="1e18">1 &#215; 10<sup>18</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="P" CODE="PT">

+      <name>peta</name>

+      <printSymbol>P</printSymbol>

+      <value value="1e15">1 &#215; 10<sup>15</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="T" CODE="TR">

+      <name>tera</name>

+      <printSymbol>T</printSymbol>

+      <value value="1e12">1 &#215; 10<sup>12</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="G" CODE="GA">

+      <name>giga</name>

+      <printSymbol>G</printSymbol>

+      <value value="1e9">1 &#215; 10<sup>9</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="M" CODE="MA">

+      <name>mega</name>

+      <printSymbol>M</printSymbol>

+      <value value="1e6">1 &#215; 10<sup>6</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="k" CODE="K">

+      <name>kilo</name>

+      <printSymbol>k</printSymbol>

+      <value value="1e3">1 &#215; 10<sup>3</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="h" CODE="H">

+      <name>hecto</name>

+      <printSymbol>h</printSymbol>

+      <value value="1e2">1 &#215; 10<sup>2</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="da" CODE="DA">

+      <name>deka</name>

+      <printSymbol>da</printSymbol>

+      <value value="1e1">1 &#215; 10<sup>1</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="d" CODE="D">

+      <name>deci</name>

+      <printSymbol>d</printSymbol>

+      <value value="1e-1">1 &#215; 10<sup>-1</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="c" CODE="C">

+      <name>centi</name>

+      <printSymbol>c</printSymbol>

+      <value value="1e-2">1 &#215; 10<sup>-2</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="m" CODE="M">

+      <name>milli</name>

+      <printSymbol>m</printSymbol>

+      <value value="1e-3">1 &#215; 10<sup>-3</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="u" CODE="U">

+      <name>micro</name>

+      <printSymbol>&#956;</printSymbol>

+      <value value="1e-6">1 &#215; 10<sup>-6</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="n" CODE="N">

+      <name>nano</name>

+      <printSymbol>n</printSymbol>

+      <value value="1e-9">1 &#215; 10<sup>-9</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="p" CODE="P">

+      <name>pico</name>

+      <printSymbol>p</printSymbol>

+      <value value="1e-12">1 &#215; 10<sup>-12</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="f" CODE="F">

+      <name>femto</name>

+      <printSymbol>f</printSymbol>

+      <value value="1e-15">1 &#215; 10<sup>-15</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="a" CODE="A">

+      <name>atto</name>

+      <printSymbol>a</printSymbol>

+      <value value="1e-18">1 &#215; 10<sup>-18</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="z" CODE="ZO">

+      <name>zepto</name>

+      <printSymbol>z</printSymbol>

+      <value value="1e-21">1 &#215; 10<sup>-21</sup>

+      </value>

+   </prefix>

+   <prefix xmlns="" Code="y" CODE="YO">

+      <name>yocto</name>

+      <printSymbol>y</printSymbol>

+      <value value="1e-24">1 &#215; 10<sup>-24</sup>

+      </value>

+   </prefix>

+   <base-unit xmlns="" Code="m" CODE="M" dim="L">

+      <name>meter</name>

+      <printSymbol>m</printSymbol>

+      <property>length</property>

+   </base-unit>

+   <base-unit xmlns="" Code="s" CODE="S" dim="T">

+      <name>second</name>

+      <printSymbol>s</printSymbol>

+      <property>time</property>

+   </base-unit>

+   <base-unit xmlns="" Code="g" CODE="G" dim="M">

+      <name>gram</name>

+      <printSymbol>g</printSymbol>

+      <property>mass</property>

+   </base-unit>

+   <base-unit xmlns="" Code="rad" CODE="RAD" dim="A">

+      <name>radian</name>

+      <printSymbol>rad</printSymbol>

+      <property>plane angle</property>

+   </base-unit>

+   <base-unit xmlns="" Code="K" CODE="K" dim="C">

+      <name>Kelvin</name>

+      <printSymbol>K</printSymbol>

+      <property>temperature</property>

+   </base-unit>

+   <base-unit xmlns="" Code="C" CODE="C" dim="Q">

+      <name>Coulomb</name>

+      <printSymbol>C</printSymbol>

+      <property>electric charge</property>

+   </base-unit>

+   <base-unit xmlns="" Code="cd" CODE="CD" dim="F">

+      <name>candela</name>

+      <printSymbol>cd</printSymbol>

+      <property>luminous intensity</property>

+   </base-unit>

+   <unit xmlns="" Code="10*" CODE="10*" isMetric="no" class="dimless">

+      <name>the number ten for arbitrary powers</name>

+      <printSymbol>10</printSymbol>

+      <property>number</property>

+      <value Unit="1" UNIT="1" value="10">10</value>

+   </unit>

+   <unit xmlns="" Code="10^" CODE="10^" isMetric="no" class="dimless">

+      <name>the number ten for arbitrary powers</name>

+      <printSymbol>10</printSymbol>

+      <property>number</property>

+      <value Unit="1" UNIT="1" value="10">10</value>

+   </unit>

+   <unit xmlns="" Code="[pi]" CODE="[PI]" isMetric="no" class="dimless">

+      <name>the number pi</name>

+      <printSymbol>&#960;</printSymbol>

+      <property>number</property>

+      <value Unit="1" UNIT="1"

+             value="3.1415926535897932384626433832795028841971693993751058209749445923">&#960;</value>

+   </unit>

+   <unit xmlns="" Code="%" CODE="%" isMetric="no" class="dimless">

+      <name>percent</name>

+      <printSymbol>%</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-2" UNIT="10*-2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ppth]" CODE="[PPTH]" isMetric="no" class="dimless">

+      <name>parts per thousand</name>

+      <printSymbol>ppth</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-3" UNIT="10*-3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ppm]" CODE="[PPM]" isMetric="no" class="dimless">

+      <name>parts per million</name>

+      <printSymbol>ppm</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-6" UNIT="10*-6" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ppb]" CODE="[PPB]" isMetric="no" class="dimless">

+      <name>parts per billion</name>

+      <printSymbol>ppb</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-9" UNIT="10*-9" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pptr]" CODE="[PPTR]" isMetric="no" class="dimless">

+      <name>parts per trillion</name>

+      <printSymbol>pptr</printSymbol>

+      <property>fraction</property>

+      <value Unit="10*-12" UNIT="10*-12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="mol" CODE="MOL" isMetric="yes" class="si">

+      <name>mole</name>

+      <printSymbol>mol</printSymbol>

+      <property>amount of substance</property>

+      <value Unit="10*23" UNIT="10*23" value="6.0221367">6.0221367</value>

+   </unit>

+   <unit xmlns="" Code="sr" CODE="SR" isMetric="yes" class="si">

+      <name>steradian</name>

+      <printSymbol>sr</printSymbol>

+      <property>solid angle</property>

+      <value Unit="rad2" UNIT="RAD2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Hz" CODE="HZ" isMetric="yes" class="si">

+      <name>Hertz</name>

+      <printSymbol>Hz</printSymbol>

+      <property>frequency</property>

+      <value Unit="s-1" UNIT="S-1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="N" CODE="N" isMetric="yes" class="si">

+      <name>Newton</name>

+      <printSymbol>N</printSymbol>

+      <property>force</property>

+      <value Unit="kg.m/s2" UNIT="KG.M/S2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Pa" CODE="PAL" isMetric="yes" class="si">

+      <name>Pascal</name>

+      <printSymbol>Pa</printSymbol>

+      <property>pressure</property>

+      <value Unit="N/m2" UNIT="N/M2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="J" CODE="J" isMetric="yes" class="si">

+      <name>Joule</name>

+      <printSymbol>J</printSymbol>

+      <property>energy</property>

+      <value Unit="N.m" UNIT="N.M" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="W" CODE="W" isMetric="yes" class="si">

+      <name>Watt</name>

+      <printSymbol>W</printSymbol>

+      <property>power</property>

+      <value Unit="J/s" UNIT="J/S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="A" CODE="A" isMetric="yes" class="si">

+      <name>Amp&#232;re</name>

+      <printSymbol>A</printSymbol>

+      <property>electric current</property>

+      <value Unit="C/s" UNIT="C/S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="V" CODE="V" isMetric="yes" class="si">

+      <name>Volt</name>

+      <printSymbol>V</printSymbol>

+      <property>electric potential</property>

+      <value Unit="J/C" UNIT="J/C" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="F" CODE="F" isMetric="yes" class="si">

+      <name>Farad</name>

+      <printSymbol>F</printSymbol>

+      <property>electric capacitance</property>

+      <value Unit="C/V" UNIT="C/V" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Ohm" CODE="OHM" isMetric="yes" class="si">

+      <name>Ohm</name>

+      <printSymbol>&#937;</printSymbol>

+      <property>electric resistance</property>

+      <value Unit="V/A" UNIT="V/A" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="S" CODE="SIE" isMetric="yes" class="si">

+      <name>Siemens</name>

+      <printSymbol>S</printSymbol>

+      <property>electric conductance</property>

+      <value Unit="Ohm-1" UNIT="OHM-1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Wb" CODE="WB" isMetric="yes" class="si">

+      <name>Weber</name>

+      <printSymbol>Wb</printSymbol>

+      <property>magentic flux</property>

+      <value Unit="V.s" UNIT="V.S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Cel" CODE="CEL" isMetric="yes" isSpecial="yes" class="si">

+      <name>degree Celsius</name>

+      <printSymbol>&#176;C</printSymbol>

+      <property>temperature</property>

+      <value Unit="cel(1 K)" UNIT="CEL(1 K)">

+         <function name="Cel" value="1" Unit="K"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="T" CODE="T" isMetric="yes" class="si">

+      <name>Tesla</name>

+      <printSymbol>T</printSymbol>

+      <property>magnetic flux density</property>

+      <value Unit="Wb/m2" UNIT="WB/M2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="H" CODE="H" isMetric="yes" class="si">

+      <name>Henry</name>

+      <printSymbol>H</printSymbol>

+      <property>inductance</property>

+      <value Unit="Wb/A" UNIT="WB/A" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="lm" CODE="LM" isMetric="yes" class="si">

+      <name>lumen</name>

+      <printSymbol>lm</printSymbol>

+      <property>luminous flux</property>

+      <value Unit="cd.sr" UNIT="CD.SR" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="lx" CODE="LX" isMetric="yes" class="si">

+      <name>lux</name>

+      <printSymbol>lx</printSymbol>

+      <property>illuminance</property>

+      <value Unit="lm/m2" UNIT="LM/M2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Bq" CODE="BQ" isMetric="yes" class="si">

+      <name>Becquerel</name>

+      <printSymbol>Bq</printSymbol>

+      <property>radioactivity</property>

+      <value Unit="s-1" UNIT="S-1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Gy" CODE="GY" isMetric="yes" class="si">

+      <name>Gray</name>

+      <printSymbol>Gy</printSymbol>

+      <property>energy dose</property>

+      <value Unit="J/kg" UNIT="J/KG" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Sv" CODE="SV" isMetric="yes" class="si">

+      <name>Sievert</name>

+      <printSymbol>Sv</printSymbol>

+      <property>dose equivalent</property>

+      <value Unit="J/kg" UNIT="J/KG" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="gon" CODE="GON" isMetric="no" class="iso1000">

+      <name>gon</name>

+      <name>grade</name>

+      <printSymbol>&#9633;<sup>g</sup>

+      </printSymbol>

+      <property>plane angle</property>

+      <value Unit="deg" UNIT="DEG" value="0.9">0.9</value>

+   </unit>

+   <unit xmlns="" Code="deg" CODE="DEG" isMetric="no" class="iso1000">

+      <name>degree</name>

+      <printSymbol>&#176;</printSymbol>

+      <property>plane angle</property>

+      <value Unit="[pi].rad/360" UNIT="[PI].RAD/360" value="2">2</value>

+   </unit>

+   <unit xmlns="" Code="'" CODE="'" isMetric="no" class="iso1000">

+      <name>minute</name>

+      <printSymbol>'</printSymbol>

+      <property>plane angle</property>

+      <value Unit="deg/60" UNIT="DEG/60" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="''" CODE="''" isMetric="no" class="iso1000">

+      <name>second</name>

+      <printSymbol>''</printSymbol>

+      <property>plane angle</property>

+      <value Unit="'/60" UNIT="'/60" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="l" CODE="L" isMetric="yes" class="iso1000">

+      <name>liter</name>

+      <printSymbol>l</printSymbol>

+      <property>volume</property>

+      <value Unit="dm3" UNIT="DM3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="L" isMetric="yes" class="iso1000">

+      <name>liter</name>

+      <printSymbol>L</printSymbol>

+      <property>volume</property>

+      <value Unit="l" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="ar" CODE="AR" isMetric="yes" class="iso1000">

+      <name>are</name>

+      <printSymbol>a</printSymbol>

+      <property>area</property>

+      <value Unit="m2" UNIT="M2" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="min" CODE="MIN" isMetric="no" class="iso1000">

+      <name>minute</name>

+      <printSymbol>min</printSymbol>

+      <property>time</property>

+      <value Unit="s" UNIT="S" value="60">60</value>

+   </unit>

+   <unit xmlns="" Code="h" CODE="HR" isMetric="no" class="iso1000">

+      <name>hour</name>

+      <printSymbol>h</printSymbol>

+      <property>time</property>

+      <value Unit="min" UNIT="MIN" value="60">60</value>

+   </unit>

+   <unit xmlns="" Code="d" CODE="D" isMetric="no" class="iso1000">

+      <name>day</name>

+      <printSymbol>d</printSymbol>

+      <property>time</property>

+      <value Unit="h" UNIT="HR" value="24">24</value>

+   </unit>

+   <unit xmlns="" Code="a_t" CODE="ANN_T" isMetric="no" class="iso1000">

+      <name>tropical year</name>

+      <printSymbol>a<sub>t</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="365.24219">365.24219</value>

+   </unit>

+   <unit xmlns="" Code="a_j" CODE="ANN_J" isMetric="no" class="iso1000">

+      <name>mean Julian year</name>

+      <printSymbol>a<sub>j</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="365.25">365.25</value>

+   </unit>

+   <unit xmlns="" Code="a_g" CODE="ANN_G" isMetric="no" class="iso1000">

+      <name>mean Gregorian year</name>

+      <printSymbol>a<sub>g</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="365.2425">365.2425</value>

+   </unit>

+   <unit xmlns="" Code="a" CODE="ANN" isMetric="no" class="iso1000">

+      <name>year</name>

+      <printSymbol>a</printSymbol>

+      <property>time</property>

+      <value Unit="a_j" UNIT="ANN_J" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="wk" CODE="WK" isMetric="no" class="iso1000">

+      <name>week</name>

+      <printSymbol>wk</printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="7">7</value>

+   </unit>

+   <unit xmlns="" Code="mo_s" CODE="MO_S" isMetric="no" class="iso1000">

+      <name>synodal month</name>

+      <printSymbol>mo<sub>s</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="d" UNIT="D" value="29.53059">29.53059</value>

+   </unit>

+   <unit xmlns="" Code="mo_j" CODE="MO_J" isMetric="no" class="iso1000">

+      <name>mean Julian month</name>

+      <printSymbol>mo<sub>j</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="a_j/12" UNIT="ANN_J/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="mo_g" CODE="MO_G" isMetric="no" class="iso1000">

+      <name>mean Gregorian month</name>

+      <printSymbol>mo<sub>g</sub>

+      </printSymbol>

+      <property>time</property>

+      <value Unit="a_g/12" UNIT="ANN_G/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="mo" CODE="MO" isMetric="no" class="iso1000">

+      <name>month</name>

+      <printSymbol>mo</printSymbol>

+      <property>time</property>

+      <value Unit="mo_j" UNIT="MO_J" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="t" CODE="TNE" isMetric="yes" class="iso1000">

+      <name>tonne</name>

+      <printSymbol>t</printSymbol>

+      <property>mass</property>

+      <value Unit="kg" UNIT="KG" value="1e3">1 &#215; 10<sup>3</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="bar" CODE="BAR" isMetric="yes" class="iso1000">

+      <name>bar</name>

+      <printSymbol>bar</printSymbol>

+      <property>pressure</property>

+      <value Unit="Pa" UNIT="PAL" value="1e5">1 &#215; 10<sup>5</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="u" CODE="AMU" isMetric="yes" class="iso1000">

+      <name>unified atomic mass unit</name>

+      <printSymbol>u</printSymbol>

+      <property>mass</property>

+      <value Unit="g" UNIT="G" value="1.6605402e-24">1.6605402 &#215; 10<sup>-24</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="eV" CODE="EV" isMetric="yes" class="iso1000">

+      <name>electronvolt</name>

+      <printSymbol>eV</printSymbol>

+      <property>energy</property>

+      <value Unit="[e].V" UNIT="[E].V" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="AU" CODE="ASU" isMetric="no" class="iso1000">

+      <name>astronomic unit</name>

+      <printSymbol>AU</printSymbol>

+      <property>length</property>

+      <value Unit="Mm" UNIT="MAM" value="149597.870691">149597.870691</value>

+   </unit>

+   <unit xmlns="" Code="pc" CODE="PRS" isMetric="yes" class="iso1000">

+      <name>parsec</name>

+      <printSymbol>pc</printSymbol>

+      <property>length</property>

+      <value Unit="m" UNIT="M" value="3.085678e16">3.085678 &#215; 10<sup>16</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[c]" CODE="[C]" isMetric="yes" class="const">

+      <name>velocity of light</name>

+      <printSymbol>

+         <i>c</i>

+      </printSymbol>

+      <property>velocity</property>

+      <value Unit="m/s" UNIT="M/S" value="299792458">299792458</value>

+   </unit>

+   <unit xmlns="" Code="[h]" CODE="[H]" isMetric="yes" class="const">

+      <name>Planck constant</name>

+      <printSymbol>

+         <i>h</i>

+      </printSymbol>

+      <property>action</property>

+      <value Unit="J.s" UNIT="J.S" value="6.6260755e-24">6.6260755 &#215; 10<sup>-24</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[k]" CODE="[K]" isMetric="yes" class="const">

+      <name>Boltzmann constant</name>

+      <printSymbol>

+         <i>k</i>

+      </printSymbol>

+      <property>(unclassified)</property>

+      <value Unit="J/K" UNIT="J/K" value="1.380658e-23">1.380658 &#215; 10<sup>-23</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[eps_0]" CODE="[EPS_0]" isMetric="yes" class="const">

+      <name>permittivity of vacuum</name>

+      <printSymbol>

+         <i>&#949;<sub>

+               <r>0</r>

+            </sub>

+         </i>

+      </printSymbol>

+      <property>electric permittivity</property>

+      <value Unit="F/m" UNIT="F/M" value="8.854187817e-12">8.854187817 &#215; 10<sup>-12</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[mu_0]" CODE="[MU_0]" isMetric="yes" class="const">

+      <name>permeability of vacuum</name>

+      <printSymbol>

+         <i>&#956;<sub>

+               <r>0</r>

+            </sub>

+         </i>

+      </printSymbol>

+      <property>magnetic permeability</property>

+      <value Unit="4.[pi].10*-7.N/A2" UNIT="4.[PI].10*-7.N/A2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[e]" CODE="[E]" isMetric="yes" class="const">

+      <name>elementary charge</name>

+      <printSymbol>

+         <i>e</i>

+      </printSymbol>

+      <property>electric charge</property>

+      <value Unit="C" UNIT="C" value="1.60217733e-19">1.60217733 &#215; 10<sup>-19</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[m_e]" CODE="[M_E]" isMetric="yes" class="const">

+      <name>electron mass</name>

+      <printSymbol>

+         <i>m<sub>

+               <r>e</r>

+            </sub>

+         </i>

+      </printSymbol>

+      <property>mass</property>

+      <value Unit="g" UNIT="g" value="9.1093897e-28">9.1093897 &#215; 10<sup>-28</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[m_p]" CODE="[M_P]" isMetric="yes" class="const">

+      <name>proton mass</name>

+      <printSymbol>

+         <i>m<sub>

+               <r>p</r>

+            </sub>

+         </i>

+      </printSymbol>

+      <property>mass</property>

+      <value Unit="g" UNIT="g" value="1.6726231e-24">1.6726231 &#215; 10<sup>-24</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[G]" CODE="[GC]" isMetric="yes" class="const">

+      <name>Newtonian constant of gravitation</name>

+      <printSymbol>

+         <i>G</i>

+      </printSymbol>

+      <property>(unclassified)</property>

+      <value Unit="m3.kg-1.s-2" UNIT="M3.KG-1.S-2" value="6.67259e-11">6.67259 &#215; 10<sup>-11</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[g]" CODE="[G]" isMetric="yes" class="const">

+      <name>standard acceleration of free fall</name>

+      <printSymbol>

+         <i>g<sub>n</sub>

+         </i>

+      </printSymbol>

+      <property>acceleration</property>

+      <value Unit="m/s2" UNIT="M/S2" value="980665e-5">9.80665</value>

+   </unit>

+   <unit xmlns="" Code="atm" CODE="ATM" isMetric="no" class="const">

+      <name>standard atmosphere</name>

+      <printSymbol>atm</printSymbol>

+      <property>pressure</property>

+      <value Unit="Pa" UNIT="PAL" value="101325">101325</value>

+   </unit>

+   <unit xmlns="" Code="[ly]" CODE="[LY]" isMetric="yes" class="const">

+      <name>light-year</name>

+      <printSymbol>l.y.</printSymbol>

+      <property>length</property>

+      <value Unit="[c].a_j" UNIT="[C].ANN_J" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="gf" CODE="GF" isMetric="yes" class="const">

+      <name>gram-force</name>

+      <printSymbol>gf</printSymbol>

+      <property>force</property>

+      <value Unit="g.[g]" UNIT="G.[G]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[lbf_av]" CODE="[LBF_AV]" isMetric="no" class="const">

+      <name>pound force</name>

+      <printSymbol>lbf</printSymbol>

+      <property>force</property>

+      <value Unit="[lb_av].[g]" UNIT="[LB_AV].[G]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Ky" CODE="KY" isMetric="yes" class="cgs">

+      <name>Kayser</name>

+      <printSymbol>K</printSymbol>

+      <property>lineic number</property>

+      <value Unit="cm-1" UNIT="CM-1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Gal" CODE="GL" isMetric="yes" class="cgs">

+      <name>Gal</name>

+      <printSymbol>Gal</printSymbol>

+      <property>acceleration</property>

+      <value Unit="cm/s2" UNIT="CM/S2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="dyn" CODE="DYN" isMetric="yes" class="cgs">

+      <name>dyne</name>

+      <printSymbol>dyn</printSymbol>

+      <property>force</property>

+      <value Unit="g.cm/s2" UNIT="G.CM/S2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="erg" CODE="ERG" isMetric="yes" class="cgs">

+      <name>erg</name>

+      <printSymbol>erg</printSymbol>

+      <property>energy</property>

+      <value Unit="dyn.cm" UNIT="DYN.CM" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="P" CODE="P" isMetric="yes" class="cgs">

+      <name>Poise</name>

+      <printSymbol>P</printSymbol>

+      <property>dynamic viscosity</property>

+      <value Unit="dyn.s/cm2" UNIT="DYN.S/CM2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Bi" CODE="BI" isMetric="yes" class="cgs">

+      <name>Biot</name>

+      <printSymbol>Bi</printSymbol>

+      <property>electric current</property>

+      <value Unit="A" UNIT="A" value="10">10</value>

+   </unit>

+   <unit xmlns="" Code="St" CODE="ST" isMetric="yes" class="cgs">

+      <name>Stokes</name>

+      <printSymbol>St</printSymbol>

+      <property>kinematic viscosity</property>

+      <value Unit="cm2/s" UNIT="CM2/S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Mx" CODE="MX" isMetric="yes" class="cgs">

+      <name>Maxwell</name>

+      <printSymbol>Mx</printSymbol>

+      <property>flux of magnetic induction</property>

+      <value Unit="Wb" UNIT="WB" value="1e-8">1 &#215; 10<sup>-8</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="G" CODE="GS" isMetric="yes" class="cgs">

+      <name>Gauss</name>

+      <printSymbol>Gs</printSymbol>

+      <property>magnetic flux density</property>

+      <value Unit="T" UNIT="T" value="1e-4">1 &#215; 10<sup>-4</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="Oe" CODE="OE" isMetric="yes" class="cgs">

+      <name>Oersted</name>

+      <printSymbol>Oe</printSymbol>

+      <property>magnetic field intensity</property>

+      <value Unit="/[pi].A/m" UNIT="/[PI].A/M" value="250">250</value>

+   </unit>

+   <unit xmlns="" Code="Gb" CODE="GB" isMetric="yes" class="cgs">

+      <name>Gilbert</name>

+      <printSymbol>Gb</printSymbol>

+      <property>magnetic tension</property>

+      <value Unit="Oe.cm" UNIT="OE.CM" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="sb" CODE="SB" isMetric="yes" class="cgs">

+      <name>stilb</name>

+      <printSymbol>sb</printSymbol>

+      <property>lum. intensity density</property>

+      <value Unit="cd/cm2" UNIT="CD/CM2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Lmb" CODE="LMB" isMetric="yes" class="cgs">

+      <name>Lambert</name>

+      <printSymbol>L</printSymbol>

+      <property>brightness</property>

+      <value Unit="cd/cm2/[pi]" UNIT="CD/CM2/[PI]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="ph" CODE="PHT" isMetric="yes" class="cgs">

+      <name>phot</name>

+      <printSymbol>ph</printSymbol>

+      <property>illuminance</property>

+      <value Unit="lx" UNIT="LX" value="1e-4">1 &#215; 10<sup>-4</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="Ci" CODE="CI" isMetric="yes" class="cgs">

+      <name>Curie</name>

+      <printSymbol>Ci</printSymbol>

+      <property>radioactivity</property>

+      <value Unit="Bq" UNIT="BQ" value="37e9">3.7 &#215; 10<sup>10</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="R" CODE="ROE" isMetric="yes" class="cgs">

+      <name>Roentgen</name>

+      <printSymbol>R</printSymbol>

+      <property>ion dose</property>

+      <value Unit="C/kg" UNIT="C/KG" value="2.58e-4">2.58 &#215; 10<sup>-4</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="RAD" CODE="[RAD]" isMetric="yes" class="cgs">

+      <name>radiation absorbed dose</name>

+      <printSymbol>RAD</printSymbol>

+      <property>energy dose</property>

+      <value Unit="erg/g" UNIT="ERG/G" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="REM" CODE="[REM]" isMetric="yes" class="cgs">

+      <name>radiation equivalent man</name>

+      <printSymbol>REM</printSymbol>

+      <property>dose equivalent</property>

+      <value Unit="RAD" UNIT="[RAD]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[in_i]" CODE="[IN_I]" isMetric="no" class="intcust">

+      <name>inch</name>

+      <printSymbol>in</printSymbol>

+      <property>length</property>

+      <value Unit="cm" UNIT="CM" value="254e-2">2.54</value>

+   </unit>

+   <unit xmlns="" Code="[ft_i]" CODE="[FT_I]" isMetric="no" class="intcust">

+      <name>foot</name>

+      <printSymbol>ft</printSymbol>

+      <property>length</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[yd_i]" CODE="[YD_I]" isMetric="no" class="intcust">

+      <name>yard</name>

+      <printSymbol>yd</printSymbol>

+      <property>length</property>

+      <value Unit="[ft_i]" UNIT="[FT_I]" value="3">3</value>

+   </unit>

+   <unit xmlns="" Code="[mi_i]" CODE="[MI_I]" isMetric="no" class="intcust">

+      <name>statute mile</name>

+      <printSymbol>mi</printSymbol>

+      <property>length</property>

+      <value Unit="[ft_i]" UNIT="[FT_I]" value="5280">5280</value>

+   </unit>

+   <unit xmlns="" Code="[fth_i]" CODE="[FTH_I]" isMetric="no" class="intcust">

+      <name>fathom</name>

+      <printSymbol>fth</printSymbol>

+      <property>depth of water</property>

+      <value Unit="[ft_i]" UNIT="[FT_I]" value="6">6</value>

+   </unit>

+   <unit xmlns="" Code="[nmi_i]" CODE="[NMI_I]" isMetric="no" class="intcust">

+      <name>nautical mile</name>

+      <printSymbol>n.mi</printSymbol>

+      <property>length</property>

+      <value Unit="m" UNIT="M" value="1852">1852</value>

+   </unit>

+   <unit xmlns="" Code="[kn_i]" CODE="[KN_I]" isMetric="no" class="intcust">

+      <name>knot</name>

+      <printSymbol>knot</printSymbol>

+      <property>velocity</property>

+      <value Unit="[nmi_i]/h" UNIT="[NMI_I]/H" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[sin_i]" CODE="[SIN_I]" isMetric="no" class="intcust">

+      <name>square inch</name>

+      <property>area</property>

+      <value Unit="[in_i]2" UNIT="[IN_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[sft_i]" CODE="[SFT_I]" isMetric="no" class="intcust">

+      <name>square foot</name>

+      <property>area</property>

+      <value Unit="[ft_i]2" UNIT="[FT_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[syd_i]" CODE="[SYD_I]" isMetric="no" class="intcust">

+      <name>square yard</name>

+      <property>area</property>

+      <value Unit="[yd_i]2" UNIT="[YD_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cin_i]" CODE="[CIN_I]" isMetric="no" class="intcust">

+      <name>cubic inch</name>

+      <property>volume</property>

+      <value Unit="[in_i]3" UNIT="[IN_I]3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cft_i]" CODE="[CFT_I]" isMetric="no" class="intcust">

+      <name>cubic foot</name>

+      <property>volume</property>

+      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cyd_i]" CODE="[CYD_I]" isMetric="no" class="intcust">

+      <name>cubic yard</name>

+      <printSymbol>cu.yd</printSymbol>

+      <property>volume</property>

+      <value Unit="[yd_i]3" UNIT="[YD_I]3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[bf_i]" CODE="[BF_I]" isMetric="no" class="intcust">

+      <name>board foot</name>

+      <property>volume</property>

+      <value Unit="[in_i]3" UNIT="[IN_I]3" value="144">144</value>

+   </unit>

+   <unit xmlns="" Code="[cr_i]" CODE="[CR_I]" isMetric="no" class="intcust">

+      <name>cord</name>

+      <property>volume</property>

+      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="128">128</value>

+   </unit>

+   <unit xmlns="" Code="[mil_i]" CODE="[MIL_I]" isMetric="no" class="intcust">

+      <name>mil</name>

+      <printSymbol>mil</printSymbol>

+      <property>length</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="1e-3">1 &#215; 10<sup>-3</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[cml_i]" CODE="[CML_I]" isMetric="no" class="intcust">

+      <name>circular mil</name>

+      <printSymbol>circ.mil</printSymbol>

+      <property>area</property>

+      <value Unit="[pi]/4.[mil_i]2" UNIT="[PI]/4.[MIL_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hd_i]" CODE="[HD_I]" isMetric="no" class="intcust">

+      <name>hand</name>

+      <printSymbol>hd</printSymbol>

+      <property>height of horses</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[ft_us]" CODE="[FT_US]" isMetric="no" class="us-lengths">

+      <name>foot</name>

+      <printSymbol>ft<sub>us</sub>

+      </printSymbol>

+      <property>length</property>

+      <value Unit="m/3937" UNIT="M/3937" value="1200">1200</value>

+   </unit>

+   <unit xmlns="" Code="[yd_us]" CODE="[YD_US]" isMetric="no" class="us-lengths">

+      <name>yard</name>

+      <property>length</property>

+      <value Unit="[ft_us]" UNIT="[FT_US]" value="3">3</value>

+   </unit>

+   <unit xmlns="" Code="[in_us]" CODE="[IN_US]" isMetric="no" class="us-lengths">

+      <name>inch</name>

+      <property>length</property>

+      <value Unit="[ft_us]/12" UNIT="[FT_US]/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[rd_us]" CODE="[RD_US]" isMetric="no" class="us-lengths">

+      <name>rod</name>

+      <property>length</property>

+      <value Unit="[ft_us]" UNIT="[FT_US]" value="16.5">16.5</value>

+   </unit>

+   <unit xmlns="" Code="[ch_us]" CODE="[CH_US]" isMetric="no" class="us-lengths">

+      <name>Gunter's chain</name>

+      <name>Surveyor's chain</name>

+      <property>length</property>

+      <value Unit="[rd_us]" UNIT="[RD_US]" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[lk_us]" CODE="[LK_US]" isMetric="no" class="us-lengths">

+      <name>link for Gunter's chain</name>

+      <property>length</property>

+      <value Unit="[ch_us]/100" UNIT="[CH_US]/100" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[rch_us]" CODE="[RCH_US]" isMetric="no" class="us-lengths">

+      <name>Ramden's chain</name>

+      <name>Engineer's chain</name>

+      <property>length</property>

+      <value Unit="[ft_us]" UNIT="[FT_US]" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="[rlk_us]" CODE="[RLK_US]" isMetric="no" class="us-lengths">

+      <name>link for Ramden's chain</name>

+      <property>length</property>

+      <value Unit="[rch_us]/100" UNIT="[RCH_US]/100" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[fth_us]" CODE="[FTH_US]" isMetric="no" class="us-lengths">

+      <name>fathom</name>

+      <property>length</property>

+      <value Unit="[ft_us]" UNIT="[FT_US]" value="6">6</value>

+   </unit>

+   <unit xmlns="" Code="[fur_us]" CODE="[FUR_US]" isMetric="no" class="us-lengths">

+      <name>furlong</name>

+      <property>length</property>

+      <value Unit="[rd_us]" UNIT="[RD_US]" value="40">40</value>

+   </unit>

+   <unit xmlns="" Code="[mi_us]" CODE="[MI_US]" isMetric="no" class="us-lengths">

+      <name>mile</name>

+      <property>length</property>

+      <value Unit="[fur_us]" UNIT="[FUR_US]" value="8">8</value>

+   </unit>

+   <unit xmlns="" Code="[acr_us]" CODE="[ACR_US]" isMetric="no" class="us-lengths">

+      <name>acre</name>

+      <property>area</property>

+      <value Unit="[rd_us]2" UNIT="[RD_US]2" value="160">160</value>

+   </unit>

+   <unit xmlns="" Code="[srd_us]" CODE="[SRD_US]" isMetric="no" class="us-lengths">

+      <name>square rod</name>

+      <property>area</property>

+      <value Unit="[rd_us]2" UNIT="[RD_US]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[smi_us]" CODE="[SMI_US]" isMetric="no" class="us-lengths">

+      <name>square mile</name>

+      <property>area</property>

+      <value Unit="[mi_us]2" UNIT="[MI_US]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[sct]" CODE="[SCT]" isMetric="no" class="us-lengths">

+      <name>section</name>

+      <property>area</property>

+      <value Unit="[mi_us]2" UNIT="[MI_US]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[twp]" CODE="[TWP]" isMetric="no" class="us-lengths">

+      <name>township</name>

+      <property>area</property>

+      <value Unit="[sct]" UNIT="[SCT]" value="36">36</value>

+   </unit>

+   <unit xmlns="" Code="[mil_us]" CODE="[MIL_US]" isMetric="no" class="us-lengths">

+      <name>mil</name>

+      <property>length</property>

+      <value Unit="[in_us]" UNIT="[IN_US]" value="1e-3">1 &#215; 10<sup>-3</sup>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[in_br]" CODE="[IN_BR]" isMetric="no" class="brit-length">

+      <name>inch</name>

+      <property>length</property>

+      <value Unit="cm" UNIT="CM" value="2.539998">2.539998</value>

+   </unit>

+   <unit xmlns="" Code="[ft_br]" CODE="[FT_BR]" isMetric="no" class="brit-length">

+      <name>foot</name>

+      <property>length</property>

+      <value Unit="[in_br]" UNIT="[IN_BR]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[rd_br]" CODE="[RD_BR]" isMetric="no" class="brit-length">

+      <name>rod</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="16.5">16.5</value>

+   </unit>

+   <unit xmlns="" Code="[ch_br]" CODE="[CH_BR]" isMetric="no" class="brit-length">

+      <name>Gunter's chain</name>

+      <property>length</property>

+      <value Unit="[rd_br]" UNIT="[RD_BR]" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[lk_br]" CODE="[LK_BR]" isMetric="no" class="brit-length">

+      <name>link for Gunter's chain</name>

+      <property>length</property>

+      <value Unit="[ch_br]/100" UNIT="[CH_BR]/100" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[fth_br]" CODE="[FTH_BR]" isMetric="no" class="brit-length">

+      <name>fathom</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="6">6</value>

+   </unit>

+   <unit xmlns="" Code="[pc_br]" CODE="[PC_BR]" isMetric="no" class="brit-length">

+      <name>pace</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="2.5">2.5</value>

+   </unit>

+   <unit xmlns="" Code="[yd_br]" CODE="[YD_BR]" isMetric="no" class="brit-length">

+      <name>yard</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="3">3</value>

+   </unit>

+   <unit xmlns="" Code="[mi_br]" CODE="[MI_BR]" isMetric="no" class="brit-length">

+      <name>mile</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="5280">5280</value>

+   </unit>

+   <unit xmlns="" Code="[nmi_br]" CODE="[NMI_BR]" isMetric="no" class="brit-length">

+      <name>nautical mile</name>

+      <property>length</property>

+      <value Unit="[ft_br]" UNIT="[FT_BR]" value="6080">6080</value>

+   </unit>

+   <unit xmlns="" Code="[kn_br]" CODE="[KN_BR]" isMetric="no" class="brit-length">

+      <name>knot</name>

+      <property>velocity</property>

+      <value Unit="[nmi_br]/h" UNIT="[NMI_BR]/H" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[acr_br]" CODE="[ACR_BR]" isMetric="no" class="brit-length">

+      <name>acre</name>

+      <property>area</property>

+      <value Unit="[yd_br]2" UNIT="[YD_BR]2" value="4840">4840</value>

+   </unit>

+   <unit xmlns="" Code="[gal_us]" CODE="[GAL_US]" isMetric="no" class="us-volumes">

+      <name>Queen&#160;Anne's wine gallon</name>

+      <property>fluid volume</property>

+      <value Unit="[in_i]3" UNIT="[IN_I]3" value="231">231</value>

+   </unit>

+   <unit xmlns="" Code="[bbl_us]" CODE="[BBL_US]" isMetric="no" class="us-volumes">

+      <name>barrel</name>

+      <property>fluid volume</property>

+      <value Unit="[gal_us]" UNIT="[GAL_US]" value="42">42</value>

+   </unit>

+   <unit xmlns="" Code="[qt_us]" CODE="[QT_US]" isMetric="no" class="us-volumes">

+      <name>quart</name>

+      <property>fluid volume</property>

+      <value Unit="[gal_us]/4" UNIT="[GAL_US]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pt_us]" CODE="[PT_US]" isMetric="no" class="us-volumes">

+      <name>pint</name>

+      <property>fluid volume</property>

+      <value Unit="[qt_us]/2" UNIT="[QT_US]/2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[gil_us]" CODE="[GIL_US]" isMetric="no" class="us-volumes">

+      <name>gill</name>

+      <property>fluid volume</property>

+      <value Unit="[pt_us]/4" UNIT="[PT_US]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[foz_us]" CODE="[FOZ_US]" isMetric="no" class="us-volumes">

+      <name>fluid ounce</name>

+      <printSymbol>oz fl</printSymbol>

+      <property>fluid volume</property>

+      <value Unit="[gil_us]/4" UNIT="[GIL_US]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[fdr_us]" CODE="[FDR_US]" isMetric="no" class="us-volumes">

+      <name>fluid dram</name>

+      <property>fluid volume</property>

+      <value Unit="[foz_us]/8" UNIT="[FOZ_US]/8" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[min_us]" CODE="[MIN_US]" isMetric="no" class="us-volumes">

+      <name>minim</name>

+      <property>fluid volume</property>

+      <value Unit="[fdr_us]/60" UNIT="[FDR_US]/60" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[crd_us]" CODE="[CRD_US]" isMetric="no" class="us-volumes">

+      <name>cord</name>

+      <property>fluid volume</property>

+      <value Unit="[ft_i]3" UNIT="[FT_I]3" value="128">128</value>

+   </unit>

+   <unit xmlns="" Code="[bu_us]" CODE="[BU_US]" isMetric="no" class="us-volumes">

+      <name>bushel</name>

+      <property>dry volume</property>

+      <value Unit="[in_i]3" UNIT="[IN_I]3" value="2150.42">2150.42</value>

+   </unit>

+   <unit xmlns="" Code="[gal_wi]" CODE="[GAL_WI]" isMetric="no" class="us-volumes">

+      <name>historical winchester gallon</name>

+      <property>dry volume</property>

+      <value Unit="[bu_us]/8" UNIT="[BU_US]/8" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pk_us]" CODE="[PK_US]" isMetric="no" class="us-volumes">

+      <name>peck</name>

+      <property>dry volume</property>

+      <value Unit="[bu_us]/4" UNIT="[BU_US]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[dqt_us]" CODE="[DQT_US]" isMetric="no" class="us-volumes">

+      <name>dry quart</name>

+      <property>dry volume</property>

+      <value Unit="[pk_us]/8" UNIT="[PK_US]/8" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[dpt_us]" CODE="[DPT_US]" isMetric="no" class="us-volumes">

+      <name>dry pint</name>

+      <property>dry volume</property>

+      <value Unit="[dqt_us]/2" UNIT="[DQT_US]/2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[tbs_us]" CODE="[TBS_US]" isMetric="no" class="us-volumes">

+      <name>tablespoon</name>

+      <property>volume</property>

+      <value Unit="[foz_us]/2" UNIT="[FOZ_US]/2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[tsp_us]" CODE="[TSP_US]" isMetric="no" class="us-volumes">

+      <name>teaspoon</name>

+      <property>volume</property>

+      <value Unit="[tbs_us]/3" UNIT="[TBS_US]/3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cup_us]" CODE="[CUP_US]" isMetric="no" class="us-volumes">

+      <name>cup</name>

+      <property>volume</property>

+      <value Unit="[tbs_us]" UNIT="[TBS_US]" value="16">16</value>

+   </unit>

+   <unit xmlns="" Code="[foz_m]" CODE="[FOZ_M]" isMetric="no" class="us-volumes">

+      <name>metric fluid ounce</name>

+      <printSymbol>oz fl</printSymbol>

+      <property>fluid volume</property>

+      <value Unit="mL" UNIT="ML" value="30">30</value>

+   </unit>

+   <unit xmlns="" Code="[cup_m]" CODE="[CUP_M]" isMetric="no" class="us-volumes">

+      <name>metric cup</name>

+      <property>volume</property>

+      <value Unit="mL" UNIT="ML" value="240">240</value>

+   </unit>

+   <unit xmlns="" Code="[tsp_m]" CODE="[TSP_M]" isMetric="no" class="us-volumes">

+      <name>metric teaspoon</name>

+      <property>volume</property>

+      <value Unit="mL" UNIT="mL" value="5">5</value>

+   </unit>

+   <unit xmlns="" Code="[tbs_m]" CODE="[TBS_M]" isMetric="no" class="us-volumes">

+      <name>metric tablespoon</name>

+      <property>volume</property>

+      <value Unit="mL" UNIT="mL" value="15">15</value>

+   </unit>

+   <unit xmlns="" Code="[gal_br]" CODE="[GAL_BR]" isMetric="no" class="brit-volumes">

+      <name>gallon</name>

+      <property>volume</property>

+      <value Unit="l" UNIT="L" value="4.54609">4.54609</value>

+   </unit>

+   <unit xmlns="" Code="[pk_br]" CODE="[PK_BR]" isMetric="no" class="brit-volumes">

+      <name>peck</name>

+      <property>volume</property>

+      <value Unit="[gal_br]" UNIT="[GAL_BR]" value="2">2</value>

+   </unit>

+   <unit xmlns="" Code="[bu_br]" CODE="[BU_BR]" isMetric="no" class="brit-volumes">

+      <name>bushel</name>

+      <property>volume</property>

+      <value Unit="[pk_br]" UNIT="[PK_BR]" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[qt_br]" CODE="[QT_BR]" isMetric="no" class="brit-volumes">

+      <name>quart</name>

+      <property>volume</property>

+      <value Unit="[gal_br]/4" UNIT="[GAL_BR]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pt_br]" CODE="[PT_BR]" isMetric="no" class="brit-volumes">

+      <name>pint</name>

+      <property>volume</property>

+      <value Unit="[qt_br]/2" UNIT="[QT_BR]/2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[gil_br]" CODE="[GIL_BR]" isMetric="no" class="brit-volumes">

+      <name>gill</name>

+      <property>volume</property>

+      <value Unit="[pt_br]/4" UNIT="[PT_BR]/4" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[foz_br]" CODE="[FOZ_BR]" isMetric="no" class="brit-volumes">

+      <name>fluid ounce</name>

+      <property>volume</property>

+      <value Unit="[gil_br]/5" UNIT="[GIL_BR]/5" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[fdr_br]" CODE="[FDR_BR]" isMetric="no" class="brit-volumes">

+      <name>fluid dram</name>

+      <property>volume</property>

+      <value Unit="[foz_br]/8" UNIT="[FOZ_BR]/8" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[min_br]" CODE="[MIN_BR]" isMetric="no" class="brit-volumes">

+      <name>minim</name>

+      <property>volume</property>

+      <value Unit="[fdr_br]/60" UNIT="[FDR_BR]/60" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[gr]" CODE="[GR]" isMetric="no" class="avoirdupois">

+      <name>grain</name>

+      <property>mass</property>

+      <value Unit="mg" UNIT="MG" value="64.79891">64.79891</value>

+   </unit>

+   <unit xmlns="" Code="[lb_av]" CODE="[LB_AV]" isMetric="no" class="avoirdupois">

+      <name>pound</name>

+      <printSymbol>lb</printSymbol>

+      <property>mass</property>

+      <value Unit="[gr]" UNIT="[GR]" value="7000">7000</value>

+   </unit>

+   <unit xmlns="" Code="[oz_av]" CODE="[OZ_AV]" isMetric="no" class="avoirdupois">

+      <name>ounce</name>

+      <printSymbol>oz</printSymbol>

+      <property>mass</property>

+      <value Unit="[lb_av]/16" UNIT="[LB_AV]/16" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[dr_av]" CODE="[DR_AV]" isMetric="no" class="avoirdupois">

+      <name>dram</name>

+      <property>mass</property>

+      <value Unit="[oz_av]/16" UNIT="[OZ_AV]/16" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[scwt_av]" CODE="[SCWT_AV]" isMetric="no" class="avoirdupois">

+      <name>short hundredweight</name>

+      <name>U.S. hundredweight</name>

+      <property>mass</property>

+      <value Unit="[lb_av]" UNIT="[LB_AV]" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="[lcwt_av]" CODE="[LCWT_AV]" isMetric="no" class="avoirdupois">

+      <name>long hunderdweight</name>

+      <name>British hundredweight</name>

+      <property>mass</property>

+      <value Unit="[lb_av]" UNIT="[LB_AV]" value="112">112</value>

+   </unit>

+   <unit xmlns="" Code="[ston_av]" CODE="[STON_AV]" isMetric="no" class="avoirdupois">

+      <name>short ton</name>

+      <name>U.S. ton</name>

+      <property>mass</property>

+      <value Unit="[scwt_av]" UNIT="[SCWT_AV]" value="20">20</value>

+   </unit>

+   <unit xmlns="" Code="[lton_av]" CODE="[LTON_AV]" isMetric="no" class="avoirdupois">

+      <name>long ton</name>

+      <name>British ton</name>

+      <property>mass</property>

+      <value Unit="[lcwt_av]" UNIT="[LCWT_AV]" value="20">20</value>

+   </unit>

+   <unit xmlns="" Code="[stone_av]" CODE="[STONE_AV]" isMetric="no" class="avoirdupois">

+      <name>stone</name>

+      <name>British stone</name>

+      <property>mass</property>

+      <value Unit="[lb_av]" UNIT="[LB_AV]" value="14">14</value>

+   </unit>

+   <unit xmlns="" Code="[pwt_tr]" CODE="[PWT_TR]" isMetric="no" class="troy">

+      <name>pennyweight</name>

+      <property>mass</property>

+      <value Unit="[gr]" UNIT="[GR]" value="24">24</value>

+   </unit>

+   <unit xmlns="" Code="[oz_tr]" CODE="[OZ_TR]" isMetric="no" class="troy">

+      <name>ounce</name>

+      <property>mass</property>

+      <value Unit="[pwt_tr]" UNIT="[PWT_TR]" value="20">20</value>

+   </unit>

+   <unit xmlns="" Code="[lb_tr]" CODE="[LB_TR]" isMetric="no" class="troy">

+      <name>pound</name>

+      <property>mass</property>

+      <value Unit="[oz_tr]" UNIT="[OZ_TR]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[sc_ap]" CODE="[SC_AP]" isMetric="no" class="apoth">

+      <name>scruple</name>

+      <property>mass</property>

+      <value Unit="[gr]" UNIT="[GR]" value="20">20</value>

+   </unit>

+   <unit xmlns="" Code="[dr_ap]" CODE="[DR_AP]" isMetric="no" class="apoth">

+      <name>dram</name>

+      <name>drachm</name>

+      <property>mass</property>

+      <value Unit="[sc_ap]" UNIT="[SC_AP]" value="3">3</value>

+   </unit>

+   <unit xmlns="" Code="[oz_ap]" CODE="[OZ_AP]" isMetric="no" class="apoth">

+      <name>ounce</name>

+      <property>mass</property>

+      <value Unit="[dr_ap]" UNIT="[DR_AP]" value="8">8</value>

+   </unit>

+   <unit xmlns="" Code="[lb_ap]" CODE="[LB_AP]" isMetric="no" class="apoth">

+      <name>pound</name>

+      <property>mass</property>

+      <value Unit="[oz_ap]" UNIT="[OZ_AP]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[oz_m]" CODE="[OZ_M]" isMetric="no" class="apoth">

+      <name>metric ounce</name>

+      <property>mass</property>

+      <value Unit="g" UNIT="g" value="28">28</value>

+   </unit>

+   <unit xmlns="" Code="[lne]" CODE="[LNE]" isMetric="no" class="typeset">

+      <name>line</name>

+      <property>length</property>

+      <value Unit="[in_i]/12" UNIT="[IN_I]/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pnt]" CODE="[PNT]" isMetric="no" class="typeset">

+      <name>point</name>

+      <property>length</property>

+      <value Unit="[lne]/6" UNIT="[LNE]/6" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pca]" CODE="[PCA]" isMetric="no" class="typeset">

+      <name>pica</name>

+      <property>length</property>

+      <value Unit="[pnt]" UNIT="[PNT]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[pnt_pr]" CODE="[PNT_PR]" isMetric="no" class="typeset">

+      <name>Printer's point</name>

+      <property>length</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="0.013837">0.013837</value>

+   </unit>

+   <unit xmlns="" Code="[pca_pr]" CODE="[PCA_PR]" isMetric="no" class="typeset">

+      <name>Printer's pica</name>

+      <property>length</property>

+      <value Unit="[pnt_pr]" UNIT="[PNT_PR]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[pied]" CODE="[PIED]" isMetric="no" class="typeset">

+      <name>pied</name>

+      <name>French foot</name>

+      <property>length</property>

+      <value Unit="cm" UNIT="CM" value="32.48">32.48</value>

+   </unit>

+   <unit xmlns="" Code="[pouce]" CODE="[POUCE]" isMetric="no" class="typeset">

+      <name>pouce</name>

+      <name>French inch</name>

+      <property>length</property>

+      <value Unit="[pied]/12" UNIT="[PIED]/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ligne]" CODE="[LIGNE]" isMetric="no" class="typeset">

+      <name>ligne</name>

+      <name>French line</name>

+      <property>length</property>

+      <value Unit="[pouce]/12" UNIT="[POUCE]/12" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[didot]" CODE="[DIDOT]" isMetric="no" class="typeset">

+      <name>didot</name>

+      <name>Didot's point</name>

+      <property>length</property>

+      <value Unit="[ligne]/6" UNIT="[LIGNE]/6" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[cicero]" CODE="[CICERO]" isMetric="no" class="typeset">

+      <name>cicero</name>

+      <name>Didot's pica</name>

+      <property>length</property>

+      <value Unit="[didot]" UNIT="[DIDOT]" value="12">12</value>

+   </unit>

+   <unit xmlns="" Code="[degF]" CODE="[DEGF]" isMetric="no" isSpecial="yes" class="heat">

+      <name>degree Fahrenheit</name>

+      <printSymbol>&#176;F</printSymbol>

+      <property>temperature</property>

+      <value Unit="degf(5 K/9)" UNIT="DEGF(5 K/9)">

+         <function name="degF" value="5" Unit="K/9"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[degR]" CODE="[degR]" isMetric="no" class="heat">

+      <name>degree Rankine</name>

+      <printSymbol>&#176;R</printSymbol>

+      <property>temperature</property>

+      <value value="5" Unit="K/9" UNIT="K/9">5</value>

+   </unit>

+   <unit xmlns="" Code="cal_[15]" CODE="CAL_[15]" isMetric="yes" class="heat">

+      <name>calorie at 15&#160;&#176;C</name>

+      <printSymbol>cal<sub>15&#176;C</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.18580">4.18580</value>

+   </unit>

+   <unit xmlns="" Code="cal_[20]" CODE="CAL_[20]" isMetric="yes" class="heat">

+      <name>calorie at 20&#160;&#176;C</name>

+      <printSymbol>cal<sub>20&#176;C</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.18190">4.18190</value>

+   </unit>

+   <unit xmlns="" Code="cal_m" CODE="CAL_M" isMetric="yes" class="heat">

+      <name>mean calorie</name>

+      <printSymbol>cal<sub>m</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.19002">4.19002</value>

+   </unit>

+   <unit xmlns="" Code="cal_IT" CODE="CAL_IT" isMetric="yes" class="heat">

+      <name>international table calorie</name>

+      <printSymbol>cal<sub>IT</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.1868">4.1868</value>

+   </unit>

+   <unit xmlns="" Code="cal_th" CODE="CAL_TH" isMetric="yes" class="heat">

+      <name>thermochemical calorie</name>

+      <printSymbol>cal<sub>th</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="J" UNIT="J" value="4.184">4.184</value>

+   </unit>

+   <unit xmlns="" Code="cal" CODE="CAL" isMetric="yes" class="heat">

+      <name>calorie</name>

+      <printSymbol>cal</printSymbol>

+      <property>energy</property>

+      <value Unit="cal_th" UNIT="CAL_TH" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Cal]" CODE="[CAL]" isMetric="no" class="heat">

+      <name>nutrition label Calories</name>

+      <printSymbol>Cal</printSymbol>

+      <property>energy</property>

+      <value Unit="kcal_th" UNIT="KCAL_TH" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_39]" CODE="[BTU_39]" isMetric="no" class="heat">

+      <name>British thermal unit at 39&#160;&#176;F</name>

+      <printSymbol>Btu<sub>39&#176;F</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05967">1.05967</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_59]" CODE="[BTU_59]" isMetric="no" class="heat">

+      <name>British thermal unit at 59&#160;&#176;F</name>

+      <printSymbol>Btu<sub>59&#176;F</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05480">1.05480</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_60]" CODE="[BTU_60]" isMetric="no" class="heat">

+      <name>British thermal unit at 60&#160;&#176;F</name>

+      <printSymbol>Btu<sub>60&#176;F</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05468">1.05468</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_m]" CODE="[BTU_M]" isMetric="no" class="heat">

+      <name>mean British thermal unit</name>

+      <printSymbol>Btu<sub>m</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05587">1.05587</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_IT]" CODE="[BTU_IT]" isMetric="no" class="heat">

+      <name>international table British thermal unit</name>

+      <printSymbol>Btu<sub>IT</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.05505585262">1.05505585262</value>

+   </unit>

+   <unit xmlns="" Code="[Btu_th]" CODE="[BTU_TH]" isMetric="no" class="heat">

+      <name>thermochemical British thermal unit</name>

+      <printSymbol>Btu<sub>th</sub>

+      </printSymbol>

+      <property>energy</property>

+      <value Unit="kJ" UNIT="kJ" value="1.054350">1.054350</value>

+   </unit>

+   <unit xmlns="" Code="[Btu]" CODE="[BTU]" isMetric="no" class="heat">

+      <name>British thermal unit</name>

+      <printSymbol>btu</printSymbol>

+      <property>energy</property>

+      <value Unit="[Btu_th]" UNIT="[BTU_TH]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[HP]" CODE="[HP]" isMetric="no" class="heat">

+      <name>horsepower</name>

+      <property>power</property>

+      <value Unit="[ft_i].[lbf_av]/s" UNIT="[FT_I].[LBF_AV]/S" value="550">550</value>

+   </unit>

+   <unit xmlns="" Code="tex" CODE="TEX" isMetric="yes" class="heat">

+      <name>tex</name>

+      <printSymbol>tex</printSymbol>

+      <property>linear mass density (of textile thread)</property>

+      <value value="1" Unit="g/km" UNIT="G/KM">1</value>

+   </unit>

+   <unit xmlns="" Code="[den]" CODE="[DEN]" isMetric="no" class="heat">

+      <name>Denier</name>

+      <printSymbol>den</printSymbol>

+      <property>linear mass density (of textile thread)</property>

+      <value value="1" Unit="g/9/km" UNIT="G/9/KM">1</value>

+   </unit>

+   <unit xmlns="" Code="m[H2O]" CODE="M[H2O]" isMetric="yes" class="clinical">

+      <name>meter of water column</name>

+      <printSymbol>m&#160;H<sub>

+            <r>2</r>

+         </sub>O</printSymbol>

+      <property>pressure</property>

+      <value Unit="kPa" UNIT="KPAL" value="980665e-5">9.80665</value>

+   </unit>

+   <unit xmlns="" Code="m[Hg]" CODE="M[HG]" isMetric="yes" class="clinical">

+      <name>meter of mercury column</name>

+      <printSymbol>m&#160;Hg</printSymbol>

+      <property>pressure</property>

+      <value Unit="kPa" UNIT="KPAL" value="133.3220">133.3220</value>

+   </unit>

+   <unit xmlns="" Code="[in_i'H2O]" CODE="[IN_I'H2O]" isMetric="no" class="clinical">

+      <name>inch of water column</name>

+      <printSymbol>in&#160;H<sub>

+            <r>2</r>

+         </sub>O</printSymbol>

+      <property>pressure</property>

+      <value Unit="m[H2O].[in_i]/m" UNIT="M[H2O].[IN_I]/M" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[in_i'Hg]" CODE="[IN_I'HG]" isMetric="no" class="clinical">

+      <name>inch of mercury column</name>

+      <printSymbol>in&#160;Hg</printSymbol>

+      <property>pressure</property>

+      <value Unit="m[Hg].[in_i]/m" UNIT="M[HG].[IN_I]/M" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[PRU]" CODE="[PRU]" isMetric="no" class="clinical">

+      <name>peripheral vascular resistance unit</name>

+      <printSymbol>P.R.U.</printSymbol>

+      <property>fluid resistance</property>

+      <value Unit="mm[Hg].s/ml" UNIT="MM[HG].S/ML" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[wood'U]" CODE="[WOOD'U]" isMetric="no" class="clinical">

+      <name>Wood unit</name>

+      <printSymbol>Wood U.</printSymbol>

+      <property>fluid resistance</property>

+      <value Unit="mm[Hg].min/L" UNIT="MM[HG].MIN/L" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[diop]" CODE="[DIOP]" isMetric="no" class="clinical">

+      <name>diopter</name>

+      <printSymbol>dpt</printSymbol>

+      <property>refraction of a lens</property>

+      <value Unit="/m" UNIT="/M" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[p'diop]" CODE="[P'DIOP]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>prism diopter</name>

+      <printSymbol>PD</printSymbol>

+      <property>refraction of a prism</property>

+      <value Unit="100tan(1 rad)" UNIT="100TAN(1 RAD)">

+         <function name="tanTimes100" value="1" Unit="deg"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="%[slope]" CODE="%[SLOPE]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>percent of slope</name>

+      <printSymbol>%</printSymbol>

+      <property>slope</property>

+      <value Unit="100tan(1 rad)" UNIT="100TAN(1 RAD)">

+         <function name="100tan" value="1" Unit="deg"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[mesh_i]" CODE="[MESH_I]" isMetric="no" class="clinical">

+      <name>mesh</name>

+      <property>lineic number</property>

+      <value Unit="/[in_i]" UNIT="/[IN_I]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Ch]" CODE="[CH]" isMetric="no" class="clinical">

+      <name>Charri&#232;re</name>

+      <name>french</name>

+      <printSymbol>Ch</printSymbol>

+      <property>gauge of catheters</property>

+      <value Unit="mm/3" UNIT="MM/3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[drp]" CODE="[DRP]" isMetric="no" class="clinical">

+      <name>drop</name>

+      <printSymbol>drp</printSymbol>

+      <property>volume</property>

+      <value Unit="ml/20" UNIT="ML/20" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hnsf'U]" CODE="[HNSF'U]" isMetric="no" class="clinical">

+      <name>Hounsfield unit</name>

+      <printSymbol>HF</printSymbol>

+      <property>x-ray attenuation</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[MET]" CODE="[MET]" isMetric="no" class="clinical">

+      <name>metabolic equivalent</name>

+      <printSymbol>MET</printSymbol>

+      <property>metabolic cost of physical activity</property>

+      <value Unit="mL/min/kg" UNIT="ML/MIN/KG" value="3.5">3.5</value>

+   </unit>

+   <unit xmlns="" Code="[hp'_X]" CODE="[HP'_X]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>homeopathic potency of decimal series (retired)</name>

+      <printSymbol>X</printSymbol>

+      <property>homeopathic potency (retired)</property>

+      <value Unit="hpX(1 1)" UNIT="HPX(1 1)">

+         <function name="hpX" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[hp'_C]" CODE="[HP'_C]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>homeopathic potency of centesimal series (retired)</name>

+      <printSymbol>C</printSymbol>

+      <property>homeopathic potency (retired)</property>

+      <value Unit="hpC(1 1)" UNIT="HPC(1 1)">

+         <function name="hpC" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[hp'_M]" CODE="[HP'_M]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>homeopathic potency of millesimal series (retired)</name>

+      <printSymbol>M</printSymbol>

+      <property>homeopathic potency (retired)</property>

+      <value Unit="hpM(1 1)" UNIT="HPM(1 1)">

+         <function name="hpM" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[hp'_Q]" CODE="[HP'_Q]" isMetric="no" isSpecial="yes"

+         class="clinical">

+      <name>homeopathic potency of quintamillesimal series (retired)</name>

+      <printSymbol>Q</printSymbol>

+      <property>homeopathic potency (retired)</property>

+      <value Unit="hpQ(1 1)" UNIT="HPQ(1 1)">

+         <function name="hpQ" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="[hp_X]" CODE="[HP_X]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of decimal hahnemannian series</name>

+      <printSymbol>X</printSymbol>

+      <property>homeopathic potency (Hahnemann)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hp_C]" CODE="[HP_C]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of centesimal hahnemannian series</name>

+      <printSymbol>C</printSymbol>

+      <property>homeopathic potency (Hahnemann)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hp_M]" CODE="[HP_M]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of millesimal hahnemannian series</name>

+      <printSymbol>M</printSymbol>

+      <property>homeopathic potency (Hahnemann)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[hp_Q]" CODE="[HP_Q]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of quintamillesimal hahnemannian series</name>

+      <printSymbol>Q</printSymbol>

+      <property>homeopathic potency (Hahnemann)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[kp_X]" CODE="[KP_X]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of decimal korsakovian series</name>

+      <printSymbol>X</printSymbol>

+      <property>homeopathic potency (Korsakov)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[kp_C]" CODE="[KP_C]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of centesimal korsakovian series</name>

+      <printSymbol>C</printSymbol>

+      <property>homeopathic potency (Korsakov)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[kp_M]" CODE="[KP_M]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of millesimal korsakovian series</name>

+      <printSymbol>M</printSymbol>

+      <property>homeopathic potency (Korsakov)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[kp_Q]" CODE="[KP_Q]" isMetric="no" isArbitrary="yes"

+         class="clinical">

+      <name>homeopathic potency of quintamillesimal korsakovian series</name>

+      <printSymbol>Q</printSymbol>

+      <property>homeopathic potency (Korsakov)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="eq" CODE="EQ" isMetric="yes" class="chemical">

+      <name>equivalents</name>

+      <printSymbol>eq</printSymbol>

+      <property>amount of substance</property>

+      <value Unit="mol" UNIT="MOL" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="osm" CODE="OSM" isMetric="yes" class="chemical">

+      <name>osmole</name>

+      <printSymbol>osm</printSymbol>

+      <property>amount of substance (dissolved particles)</property>

+      <value Unit="mol" UNIT="MOL" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[pH]" CODE="[PH]" isMetric="no" isSpecial="yes" class="chemical">

+      <name>pH</name>

+      <printSymbol>pH</printSymbol>

+      <property>acidity</property>

+      <value Unit="pH(1 mol/l)" UNIT="PH(1 MOL/L)">

+         <function name="pH" value="1" Unit="mol/l"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="g%" CODE="G%" isMetric="yes" class="chemical">

+      <name>gram percent</name>

+      <printSymbol>g%</printSymbol>

+      <property>mass concentration</property>

+      <value Unit="g/dl" UNIT="G/DL" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[S]" CODE="[S]" isMetric="no" class="chemical">

+      <name>Svedberg unit</name>

+      <printSymbol>S</printSymbol>

+      <property>sedimentation coefficient</property>

+      <value Unit="10*-13.s" UNIT="10*-13.S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[HPF]" CODE="[HPF]" isMetric="no" class="chemical">

+      <name>high power field</name>

+      <printSymbol>HPF</printSymbol>

+      <property>view area in microscope</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[LPF]" CODE="[LPF]" isMetric="no" class="chemical">

+      <name>low power field</name>

+      <printSymbol>LPF</printSymbol>

+      <property>view area in microscope</property>

+      <value Unit="1" UNIT="1" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="kat" CODE="KAT" isMetric="yes" class="chemical">

+      <name>katal</name>

+      <printSymbol>kat</printSymbol>

+      <property>catalytic activity</property>

+      <value Unit="mol/s" UNIT="MOL/S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="U" CODE="U" isMetric="yes" class="chemical">

+      <name>Unit</name>

+      <printSymbol>U</printSymbol>

+      <property>catalytic activity</property>

+      <value Unit="umol/min" UNIT="UMOL/MIN" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[iU]" CODE="[IU]" isMetric="yes" isArbitrary="yes"

+         class="chemical">

+      <name>international unit</name>

+      <printSymbol>IU</printSymbol>

+      <property>arbitrary</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[IU]" CODE="[IU]" isMetric="yes" isArbitrary="yes"

+         class="chemical">

+      <name>international unit</name>

+      <printSymbol>i.U.</printSymbol>

+      <property>arbitrary</property>

+      <value Unit="[iU]" UNIT="[IU]" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[arb'U]" CODE="[ARB'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>arbitary unit</name>

+      <printSymbol>arb. U</printSymbol>

+      <property>arbitrary</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[USP'U]" CODE="[USP'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>United States Pharmacopeia unit</name>

+      <printSymbol>U.S.P.</printSymbol>

+      <property>arbitrary</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[GPL'U]" CODE="[GPL'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>GPL unit</name>

+      <property>biologic activity of anticardiolipin IgG</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[MPL'U]" CODE="[MPL'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>MPL unit</name>

+      <property>biologic activity of anticardiolipin IgM</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[APL'U]" CODE="[APL'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>APL unit</name>

+      <property>biologic activity of anticardiolipin IgA</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[beth'U]" CODE="[BETH'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Bethesda unit</name>

+      <property>biologic activity of factor VIII inhibitor</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[anti'Xa'U]" CODE="[ANTI'XA'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>anti factor Xa unit</name>

+      <property>biologic activity of factor Xa inhibitor (heparin)</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[todd'U]" CODE="[TODD'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Todd unit</name>

+      <property>biologic activity antistreptolysin O</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[dye'U]" CODE="[DYE'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Dye unit</name>

+      <property>biologic activity of amylase</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[smgy'U]" CODE="[SMGY'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Somogyi unit</name>

+      <property>biologic activity of amylase</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[bdsk'U]" CODE="[BDSK'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Bodansky unit</name>

+      <property>biologic activity of phosphatase</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ka'U]" CODE="[KA'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>King-Armstrong unit</name>

+      <property>biologic activity of phosphatase</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[knk'U]" CODE="[KNK'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Kunkel unit</name>

+      <property>arbitrary biologic activity</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[mclg'U]" CODE="[MCLG'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Mac Lagan unit</name>

+      <property>arbitrary biologic activity</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[tb'U]" CODE="[TB'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>tuberculin unit</name>

+      <property>biologic activity of tuberculin</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[CCID_50]" CODE="[CCID_50]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>50% cell culture infectious dose</name>

+      <printSymbol>CCID<sub>50</sub>

+      </printSymbol>

+      <property>biologic activity (infectivity) of an infectious agent preparation</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[TCID_50]" CODE="[TCID_50]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>50% tissue culture infectious dose</name>

+      <printSymbol>TCID<sub>50</sub>

+      </printSymbol>

+      <property>biologic activity (infectivity) of an infectious agent preparation</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[EID_50]" CODE="[EID_50]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>50% embryo infectious dose</name>

+      <printSymbol>EID<sub>50</sub>

+      </printSymbol>

+      <property>biologic activity (infectivity) of an infectious agent preparation</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[PFU]" CODE="[PFU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>plaque forming units</name>

+      <printSymbol>PFU</printSymbol>

+      <property>amount of an infectious agent</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[FFU]" CODE="[FFU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>focus forming units</name>

+      <printSymbol>FFU</printSymbol>

+      <property>amount of an infectious agent</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[CFU]" CODE="[CFU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>colony forming units</name>

+      <printSymbol>CFU</printSymbol>

+      <property>amount of a proliferating organism</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[BAU]" CODE="[BAU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>bioequivalent allergen unit</name>

+      <printSymbol>BAU</printSymbol>

+      <property>amount of an allergen callibrated through in-vivo testing based on the ID50EAL method of (intradermal dilution for 50mm sum of erythema diameters</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[AU]" CODE="[AU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>allergen unit</name>

+      <printSymbol>AU</printSymbol>

+      <property>procedure defined amount of an allergen using some reference standard</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Amb'a'1'U]" CODE="[AMB'A'1'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>allergen unit for Ambrosia artemisiifolia</name>

+      <printSymbol>Amb a 1 U</printSymbol>

+      <property>procedure defined amount of the major allergen of ragweed.</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[PNU]" CODE="[PNU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>protein nitrogen unit</name>

+      <printSymbol>PNU</printSymbol>

+      <property>procedure defined amount of a protein substance</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[Lf]" CODE="[LF]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Limit of flocculation</name>

+      <printSymbol>Lf</printSymbol>

+      <property>procedure defined amount of an antigen substance</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[D'ag'U]" CODE="[D'AG'U]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>D-antigen unit</name>

+      <printSymbol/>

+      <property>procedure defined amount of a poliomyelitis d-antigen substance</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[FEU]" CODE="[FEU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>fibrinogen equivalent unit</name>

+      <printSymbol/>

+      <property>amount of fibrinogen broken down into the measured d-dimers</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[ELU]" CODE="[ELU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>ELISA unit</name>

+      <printSymbol/>

+      <property>arbitrary ELISA unit</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[EU]" CODE="[EU]" isMetric="no" isArbitrary="yes"

+         class="chemical">

+      <name>Ehrlich unit</name>

+      <printSymbol/>

+      <property>Ehrlich unit</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Np" CODE="NEP" isMetric="yes" isSpecial="yes" class="levels">

+      <name>neper</name>

+      <printSymbol>Np</printSymbol>

+      <property>level</property>

+      <value Unit="ln(1 1)" UNIT="LN(1 1)">

+         <function name="ln" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B" CODE="B" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel</name>

+      <printSymbol>B</printSymbol>

+      <property>level</property>

+      <value Unit="lg(1 1)" UNIT="LG(1 1)">

+         <function name="lg" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[SPL]" CODE="B[SPL]" isMetric="yes" isSpecial="yes"

+         class="levels">

+      <name>bel sound pressure</name>

+      <printSymbol>B(SPL)</printSymbol>

+      <property>pressure level</property>

+      <value Unit="2lg(2 10*-5.Pa)" UNIT="2LG(2 10*-5.PAL)">

+         <function name="lgTimes2" value="2" Unit="10*-5.Pa"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[V]" CODE="B[V]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel volt</name>

+      <printSymbol>B(V)</printSymbol>

+      <property>electric potential level</property>

+      <value Unit="2lg(1 V)" UNIT="2LG(1 V)">

+         <function name="lgTimes2" value="1" Unit="V"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[mV]" CODE="B[MV]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel millivolt</name>

+      <printSymbol>B(mV)</printSymbol>

+      <property>electric potential level</property>

+      <value Unit="2lg(1 mV)" UNIT="2LG(1 MV)">

+         <function name="lgTimes2" value="1" Unit="mV"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[uV]" CODE="B[UV]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel microvolt</name>

+      <printSymbol>B(&#956;V)</printSymbol>

+      <property>electric potential level</property>

+      <value Unit="2lg(1 uV)" UNIT="2LG(1 UV)">

+         <function name="lgTimes2" value="1" Unit="uV"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[10.nV]" CODE="B[10.NV]" isMetric="yes" isSpecial="yes"

+         class="levels">

+      <name>bel 10 nanovolt</name>

+      <printSymbol>B(10 nV)</printSymbol>

+      <property>electric potential level</property>

+      <value Unit="2lg(10 nV)" UNIT="2LG(10 NV)">

+         <function name="lgTimes2" value="10" Unit="nV"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[W]" CODE="B[W]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel watt</name>

+      <printSymbol>B(W)</printSymbol>

+      <property>power level</property>

+      <value Unit="lg(1 W)" UNIT="LG(1 W)">

+         <function name="lg" value="1" Unit="W"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="B[kW]" CODE="B[KW]" isMetric="yes" isSpecial="yes" class="levels">

+      <name>bel kilowatt</name>

+      <printSymbol>B(kW)</printSymbol>

+      <property>power level</property>

+      <value Unit="lg(1 kW)" UNIT="LG(1 KW)">

+         <function name="lg" value="1" Unit="kW"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="st" CODE="STR" isMetric="yes" class="misc">

+      <name>stere</name>

+      <printSymbol>st</printSymbol>

+      <property>volume</property>

+      <value Unit="m3" UNIT="M3" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="Ao" CODE="AO" isMetric="no" class="misc">

+      <name>&#197;ngstr&#246;m</name>

+      <printSymbol>&#197;</printSymbol>

+      <property>length</property>

+      <value Unit="nm" UNIT="NM" value="0.1">0.1</value>

+   </unit>

+   <unit xmlns="" Code="b" CODE="BRN" isMetric="no" class="misc">

+      <name>barn</name>

+      <printSymbol>b</printSymbol>

+      <property>action area</property>

+      <value Unit="fm2" UNIT="FM2" value="100">100</value>

+   </unit>

+   <unit xmlns="" Code="att" CODE="ATT" isMetric="no" class="misc">

+      <name>technical atmosphere</name>

+      <printSymbol>at</printSymbol>

+      <property>pressure</property>

+      <value Unit="kgf/cm2" UNIT="KGF/CM2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="mho" CODE="MHO" isMetric="yes" class="misc">

+      <name>mho</name>

+      <printSymbol>mho</printSymbol>

+      <property>electric conductance</property>

+      <value Unit="S" UNIT="S" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[psi]" CODE="[PSI]" isMetric="no" class="misc">

+      <name>pound per sqare inch</name>

+      <printSymbol>psi</printSymbol>

+      <property>pressure</property>

+      <value Unit="[lbf_av]/[in_i]2" UNIT="[LBF_AV]/[IN_I]2" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="circ" CODE="CIRC" isMetric="no" class="misc">

+      <name>circle</name>

+      <printSymbol>circ</printSymbol>

+      <property>plane angle</property>

+      <value Unit="[pi].rad" UNIT="[PI].RAD" value="2">2</value>

+   </unit>

+   <unit xmlns="" Code="sph" CODE="SPH" isMetric="no" class="misc">

+      <name>spere</name>

+      <printSymbol>sph</printSymbol>

+      <property>solid angle</property>

+      <value Unit="[pi].sr" UNIT="[PI].SR" value="4">4</value>

+   </unit>

+   <unit xmlns="" Code="[car_m]" CODE="[CAR_M]" isMetric="no" class="misc">

+      <name>metric carat</name>

+      <printSymbol>ct<sub>m</sub>

+      </printSymbol>

+      <property>mass</property>

+      <value Unit="g" UNIT="G" value="2e-1">0.2</value>

+   </unit>

+   <unit xmlns="" Code="[car_Au]" CODE="[CAR_AU]" isMetric="no" class="misc">

+      <name>carat of gold alloys</name>

+      <printSymbol>ct<sub>

+            <r>Au</r>

+         </sub>

+      </printSymbol>

+      <property>mass fraction</property>

+      <value Unit="/24" UNIT="/24" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="[smoot]" CODE="[SMOOT]" isMetric="no" class="misc">

+      <name>Smoot</name>

+      <printSymbol/>

+      <property>length</property>

+      <value Unit="[in_i]" UNIT="[IN_I]" value="67">67</value>

+   </unit>

+   <unit xmlns="" Code="bit_s" CODE="BIT_S" isMetric="no" isSpecial="yes"

+         class="infotech">

+      <name>bit</name>

+      <printSymbol>bit<sub>s</sub>

+      </printSymbol>

+      <property>amount of information</property>

+      <value Unit="ld(1 1)" UNIT="ld(1 1)">

+         <function name="ld" value="1" Unit="1"/>

+      </value>

+   </unit>

+   <unit xmlns="" Code="bit" CODE="BIT" isMetric="yes" class="infotech">

+      <name>bit</name>

+      <printSymbol>bit</printSymbol>

+      <property>amount of information</property>

+      <value Unit="1" UNIT="1" value="1">1</value>

+   </unit>

+   <unit xmlns="" Code="By" CODE="BY" isMetric="yes" class="infotech">

+      <name>byte</name>

+      <printSymbol>B</printSymbol>

+      <property>amount of information</property>

+      <value Unit="bit" UNIT="bit" value="8">8</value>

+   </unit>

+   <unit xmlns="" Code="Bd" CODE="BD" isMetric="yes" class="infotech">

+      <name>baud</name>

+      <printSymbol>Bd</printSymbol>

+      <property>signal transmission rate</property>

+      <value Unit="/s" UNIT="/s" value="1">1</value>

+   </unit>

+   <prefix xmlns="" Code="Ki" CODE="KIB">

+      <name>kibi</name>

+      <printSymbol>Ki</printSymbol>

+      <value value="1024">1024</value>

+   </prefix>

+   <prefix xmlns="" Code="Mi" CODE="MIB">

+      <name>mebi</name>

+      <printSymbol>Mi</printSymbol>

+      <value value="1048576">1048576</value>

+   </prefix>

+   <prefix xmlns="" Code="Gi" CODE="GIB">

+      <name>gibi</name>

+      <printSymbol>Gi</printSymbol>

+      <value value="1073741824">1073741824</value>

+   </prefix>

+   <prefix xmlns="" Code="Ti" CODE="TIB">

+      <name>tebi</name>

+      <printSymbol>Ti</printSymbol>

+      <value value="1099511627776">1099511627776</value>

+   </prefix>

 </root>
\ No newline at end of file
diff --git a/examples/ucum/pom.xml b/examples/ucum/pom.xml
index 42b50a9..7b069ad 100644
--- a/examples/ucum/pom.xml
+++ b/examples/ucum/pom.xml
@@ -1,15 +1,15 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.eclipse.uomo</groupId>
-    <artifactId>org.eclipse.uomo.examples</artifactId>
-    <version>0.7.0-SNAPSHOT</version>
-  </parent>
-  <groupId>org.eclipse.uomo.examples.ucum</groupId>
-  <artifactId>org.eclipse.uomo.examples.ucum</artifactId>
-  <packaging>pom</packaging>
-  <name>Eclipse UOMo UCUM Examples</name>
-  <modules>
-  	<module>org.eclipse.uomo.examples.ucum.console</module>
-  </modules>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <groupId>org.eclipse.uomo</groupId>

+    <artifactId>org.eclipse.uomo.examples</artifactId>

+    <version>0.7.0-SNAPSHOT</version>

+  </parent>

+  <groupId>org.eclipse.uomo.examples.ucum</groupId>

+  <artifactId>org.eclipse.uomo.examples.ucum</artifactId>

+  <packaging>pom</packaging>

+  <name>Eclipse UOMo UCUM Examples</name>

+  <modules>

+  	<module>org.eclipse.uomo.examples.ucum.console</module>

+  </modules>

 </project>
\ No newline at end of file
diff --git a/examples/units/.gitignore b/examples/units/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/examples/units/.gitignore
+++ b/examples/units/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/examples/units/.project b/examples/units/.project
index ea8a7db..0502e80 100644
--- a/examples/units/.project
+++ b/examples/units/.project
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.examples.units</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.examples.units</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/.gitignore b/examples/units/org.eclipse.uomo.examples.units.android/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/.gitignore
+++ b/examples/units/org.eclipse.uomo.examples.units.android/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/player/.gitignore b/examples/units/org.eclipse.uomo.examples.units.android/player/.gitignore
index 945bcb2..33c9b12 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/player/.gitignore
+++ b/examples/units/org.eclipse.uomo.examples.units.android/player/.gitignore
@@ -1,3 +1,3 @@
-/bin
-/gen
-/target
+/bin

+/gen

+/target

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/player/.project b/examples/units/org.eclipse.uomo.examples.units.android/player/.project
index 06bd759..ae08877 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/player/.project
+++ b/examples/units/org.eclipse.uomo.examples.units.android/player/.project
@@ -1,39 +1,39 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>player</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>player</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/player/AndroidManifest.xml b/examples/units/org.eclipse.uomo.examples.units.android/player/AndroidManifest.xml
index 8d5c1a8..03992e3 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/player/AndroidManifest.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.android/player/AndroidManifest.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="org.org.eclipse.uomo.examples.units.android" android:versionCode="1" android:versionName="0.1.0.SNAPSHOT">
-
-  <application android:icon="@drawable/icon" android:label="@string/app_name">
-    <activity android:name=".HelloAndroidActivity">
-      <intent-filter>
-        <action android:name="android.intent.action.MAIN" />
-        <category android:name="android.intent.category.LAUNCHER" />
-      </intent-filter>
-    </activity>
-  </application>
-
-</manifest>
-
+<?xml version="1.0" encoding="utf-8"?>

+<manifest xmlns:android="http://schemas.android.com/apk/res/android"

+  package="org.org.eclipse.uomo.examples.units.android" android:versionCode="1" android:versionName="0.1.0.SNAPSHOT">

+

+  <application android:icon="@drawable/icon" android:label="@string/app_name">

+    <activity android:name=".HelloAndroidActivity">

+      <intent-filter>

+        <action android:name="android.intent.action.MAIN" />

+        <category android:name="android.intent.category.LAUNCHER" />

+      </intent-filter>

+    </activity>

+  </application>

+

+</manifest>

+

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/player/project.properties b/examples/units/org.eclipse.uomo.examples.units.android/player/project.properties
index ea89160..df1e5c0 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/player/project.properties
+++ b/examples/units/org.eclipse.uomo.examples.units.android/player/project.properties
@@ -1,11 +1,11 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system use,
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-
-# Project target.
-target=android-8
+# This file is automatically generated by Android Tools.

+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!

+#

+# This file must be checked in Version Control Systems.

+#

+# To customize properties used by the Ant build system use,

+# "ant.properties", and override values to adapt the script to your

+# project structure.

+

+# Project target.

+target=android-8

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/player/res/layout/main.xml b/examples/units/org.eclipse.uomo.examples.units.android/player/res/layout/main.xml
index 09d2d1b..113ba30 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/player/res/layout/main.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.android/player/res/layout/main.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    >
-<TextView  
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content" 
-    android:text="@string/hello"
-    />
-</LinearLayout>
+<?xml version="1.0" encoding="utf-8"?>

+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    android:orientation="vertical"

+    android:layout_width="fill_parent"

+    android:layout_height="fill_parent"

+    >

+<TextView  

+    android:layout_width="fill_parent"

+    android:layout_height="wrap_content" 

+    android:text="@string/hello"

+    />

+</LinearLayout>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/player/res/values/strings.xml b/examples/units/org.eclipse.uomo.examples.units.android/player/res/values/strings.xml
index 8862e88..f1e711d 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/player/res/values/strings.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.android/player/res/values/strings.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <string name="hello">Hello player!</string>
-    <string name="app_name">player</string>
-</resources>
+<?xml version="1.0" encoding="utf-8"?>

+<resources>

+    <string name="hello">Hello player!</string>

+    <string name="app_name">player</string>

+</resources>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/player/src/main/java/org/org/eclipse/uomo/examples/units/android/HelloAndroidActivity.java b/examples/units/org.eclipse.uomo.examples.units.android/player/src/main/java/org/org/eclipse/uomo/examples/units/android/HelloAndroidActivity.java
index 6bf7ec0..af06a50 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/player/src/main/java/org/org/eclipse/uomo/examples/units/android/HelloAndroidActivity.java
+++ b/examples/units/org.eclipse.uomo.examples.units.android/player/src/main/java/org/org/eclipse/uomo/examples/units/android/HelloAndroidActivity.java
@@ -1,25 +1,25 @@
-package org.org.eclipse.uomo.examples.units.android;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.util.Log;
-
-public class HelloAndroidActivity extends Activity {
-
-    private static String TAG = "player";
-
-    /**
-     * Called when the activity is first created.
-     * @param savedInstanceState If the activity is being re-initialized after 
-     * previously being shut down then this Bundle contains the data it most 
-     * recently supplied in onSaveInstanceState(Bundle). <b>Note: Otherwise it is null.</b>
-     */
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-		Log.i(TAG, "onCreate");
-        setContentView(R.layout.main);
-    }
-
-}
-
+package org.org.eclipse.uomo.examples.units.android;

+

+import android.app.Activity;

+import android.os.Bundle;

+import android.util.Log;

+

+public class HelloAndroidActivity extends Activity {

+

+    private static String TAG = "player";

+

+    /**

+     * Called when the activity is first created.

+     * @param savedInstanceState If the activity is being re-initialized after 

+     * previously being shut down then this Bundle contains the data it most 

+     * recently supplied in onSaveInstanceState(Bundle). <b>Note: Otherwise it is null.</b>

+     */

+    @Override

+    public void onCreate(Bundle savedInstanceState) {

+        super.onCreate(savedInstanceState);

+		Log.i(TAG, "onCreate");

+        setContentView(R.layout.main);

+    }

+

+}

+

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/pom.xml b/examples/units/org.eclipse.uomo.examples.units.android/pom.xml
index daf641a..ce3af8a 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/pom.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.android/pom.xml
@@ -1,39 +1,39 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-        <artifactId>org.eclipse.uomo.examples.units</artifactId>
-        <groupId>org.eclipse.uomo.examples.units</groupId>
-        <version>0.7.0-SNAPSHOT</version>
-    </parent>
-	<artifactId>org.eclipse.uomo.examples.units.android</artifactId>
-	<packaging>pom</packaging>
-	<name>UOMo Units Android Examples</name>
-	<build>
-		<pluginManagement>
-			<plugins>
-				<plugin>
-					<artifactId>maven-compiler-plugin</artifactId>
-					<version>${maven.compilerPlugin.version}</version>
-					<configuration>
-						<source>${project.build.javaVersion}</source>
-						<target>${project.build.javaVersion}</target>
-					</configuration>
-				</plugin>
-			</plugins>
-		</pluginManagement>
-	</build>
-
-	<dependencies>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>3.8.1</version>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-  <modules>
-    <module>web</module>
-    <module>player</module>
-  </modules>
+<?xml version="1.0" encoding="UTF-8"?>

+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+        <artifactId>org.eclipse.uomo.examples.units</artifactId>

+        <groupId>org.eclipse.uomo.examples.units</groupId>

+        <version>0.7.0-SNAPSHOT</version>

+    </parent>

+	<artifactId>org.eclipse.uomo.examples.units.android</artifactId>

+	<packaging>pom</packaging>

+	<name>UOMo Units Android Examples</name>

+	<build>

+		<pluginManagement>

+			<plugins>

+				<plugin>

+					<artifactId>maven-compiler-plugin</artifactId>

+					<version>${maven.compilerPlugin.version}</version>

+					<configuration>

+						<source>${project.build.javaVersion}</source>

+						<target>${project.build.javaVersion}</target>

+					</configuration>

+				</plugin>

+			</plugins>

+		</pluginManagement>

+	</build>

+

+	<dependencies>

+		<dependency>

+			<groupId>junit</groupId>

+			<artifactId>junit</artifactId>

+			<version>3.8.1</version>

+			<scope>test</scope>

+		</dependency>

+	</dependencies>

+  <modules>

+    <module>web</module>

+    <module>player</module>

+  </modules>

 </project>
\ No newline at end of file
diff --git a/examples/units/org.eclipse.uomo.examples.units.android/web/.classpath b/examples/units/org.eclipse.uomo.examples.units.android/web/.classpath
index 5e745f7..fa05dac 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/web/.classpath
+++ b/examples/units/org.eclipse.uomo.examples.units.android/web/.classpath
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.jboss.ide.eclipse.as.core.server.runtime.runtimeTarget/JBoss 7.0 Runtime"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" output="target/classes" path="src/main/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.jboss.ide.eclipse.as.core.server.runtime.runtimeTarget/JBoss 7.0 Runtime"/>

+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/web/.gitignore b/examples/units/org.eclipse.uomo.examples.units.android/web/.gitignore
index ea8c4bf..0b42d2d 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/web/.gitignore
+++ b/examples/units/org.eclipse.uomo.examples.units.android/web/.gitignore
@@ -1 +1 @@
-/target
+/target

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/web/.project b/examples/units/org.eclipse.uomo.examples.units.android/web/.project
index e13faeb..d8bd967 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/web/.project
+++ b/examples/units/org.eclipse.uomo.examples.units.android/web/.project
@@ -1,48 +1,48 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>web</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.jboss.tools.ws.jaxrs.metamodelBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
-		<nature>org.jboss.tools.ws.jaxrs.nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>web</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.wst.common.project.facet.core.builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.jboss.tools.ws.jaxrs.metamodelBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.wst.validation.validationbuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>

+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>

+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>

+		<nature>org.jboss.tools.ws.jaxrs.nature</nature>

+	</natures>

+</projectDescription>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/web/.settings/.jsdtscope b/examples/units/org.eclipse.uomo.examples.units.android/web/.settings/.jsdtscope
index b46b920..fac399c 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/web/.settings/.jsdtscope
+++ b/examples/units/org.eclipse.uomo.examples.units.android/web/.settings/.jsdtscope
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/webapp"/>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
-		<attributes>
-			<attribute name="hide" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
-	<classpathentry kind="output" path=""/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" path="src/main/webapp"/>

+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>

+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">

+		<attributes>

+			<attribute name="hide" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>

+	<classpathentry kind="output" path=""/>

+</classpath>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/web/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/examples/units/org.eclipse.uomo.examples.units.android/web/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
index cc81385..b01fdb7 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/web/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.android/web/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
@@ -1,7 +1,7 @@
-<root>
-  <facet id="jst.jaxrs">
-    <node name="libprov">
-      <attribute name="provider-id" value="jaxrs-no-op-library-provider"/>
-    </node>
-  </facet>
-</root>
+<root>

+  <facet id="jst.jaxrs">

+    <node name="libprov">

+      <attribute name="provider-id" value="jaxrs-no-op-library-provider"/>

+    </node>

+  </facet>

+</root>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/web/src/main/webapp/WEB-INF/web.xml b/examples/units/org.eclipse.uomo.examples.units.android/web/src/main/webapp/WEB-INF/web.xml
index 28802c7..866c739 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/web/src/main/webapp/WEB-INF/web.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.android/web/src/main/webapp/WEB-INF/web.xml
@@ -1,37 +1,37 @@
-<!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
-
-<web-app>
-  <display-name>UOMo Units Android Example Web Application</display-name>
-  <servlet>
-  	<servlet-name>UnitConverterServlet</servlet-name>
-  	<display-name>UnitConverterServlet</display-name>
-  	<description>Unit Converter</description>
-  	<servlet-class>org.eclipse.uomo.examples.units.android.web.UnitConverterServlet</servlet-class>
-  	<init-param>
-  		<param-name>unit</param-name>
-  		<param-value></param-value>
-  		<description>Unit</description>
-  	</init-param>
-  	<init-param>
-  		<param-name>value</param-name>
-  		<param-value></param-value>
-  		<description>Value</description>
-  	</init-param>
-  </servlet>
-  <servlet>
-  	<servlet-name>Tempconv</servlet-name>
-  	<display-name>Tempconv</display-name>
-  	<description>Temperature Converter</description>
-  	<servlet-class>org.eclipse.uomo.examples.units.android.web.sandbox.Tempconv</servlet-class>
-  </servlet>
-  <servlet-mapping>
-  	<servlet-name>UnitConverterServlet</servlet-name>
-  	<url-pattern>/UnitConverter</url-pattern>
-  </servlet-mapping>
-  <servlet-mapping>
-  	<servlet-name>Tempconv</servlet-name>
-  	<url-pattern>/Tempconv</url-pattern>
-  </servlet-mapping>
-</web-app>
+<!DOCTYPE web-app PUBLIC

+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

+ "http://java.sun.com/dtd/web-app_2_3.dtd" >

+

+<web-app>

+  <display-name>UOMo Units Android Example Web Application</display-name>

+  <servlet>

+  	<servlet-name>UnitConverterServlet</servlet-name>

+  	<display-name>UnitConverterServlet</display-name>

+  	<description>Unit Converter</description>

+  	<servlet-class>org.eclipse.uomo.examples.units.android.web.UnitConverterServlet</servlet-class>

+  	<init-param>

+  		<param-name>unit</param-name>

+  		<param-value></param-value>

+  		<description>Unit</description>

+  	</init-param>

+  	<init-param>

+  		<param-name>value</param-name>

+  		<param-value></param-value>

+  		<description>Value</description>

+  	</init-param>

+  </servlet>

+  <servlet>

+  	<servlet-name>Tempconv</servlet-name>

+  	<display-name>Tempconv</display-name>

+  	<description>Temperature Converter</description>

+  	<servlet-class>org.eclipse.uomo.examples.units.android.web.sandbox.Tempconv</servlet-class>

+  </servlet>

+  <servlet-mapping>

+  	<servlet-name>UnitConverterServlet</servlet-name>

+  	<url-pattern>/UnitConverter</url-pattern>

+  </servlet-mapping>

+  <servlet-mapping>

+  	<servlet-name>Tempconv</servlet-name>

+  	<url-pattern>/Tempconv</url-pattern>

+  </servlet-mapping>

+</web-app>

diff --git a/examples/units/org.eclipse.uomo.examples.units.android/web/src/main/webapp/index.jsp b/examples/units/org.eclipse.uomo.examples.units.android/web/src/main/webapp/index.jsp
index c344610..f10ef21 100644
--- a/examples/units/org.eclipse.uomo.examples.units.android/web/src/main/webapp/index.jsp
+++ b/examples/units/org.eclipse.uomo.examples.units.android/web/src/main/webapp/index.jsp
@@ -1,13 +1,13 @@
-<%@ page import="org.unitsofmeasurement.quantity.*, org.eclipse.uomo.units.*, org.eclipse.uomo.units.impl.quantity.*" %>
-<html>
-<head>
-	<title>Eclipse UOMo</title>
-</head>
-<body>
-<h2>Hello UOMo!</h2>
-<%
-	Quantity<Length> q = new LengthAmount(12, SI.METRE);
-%>
-<%= q %>
-</body>
-</html>
+<%@ page import="org.unitsofmeasurement.quantity.*, org.eclipse.uomo.units.*, org.eclipse.uomo.units.impl.quantity.*" %>

+<html>

+<head>

+	<title>Eclipse UOMo</title>

+</head>

+<body>

+<h2>Hello UOMo!</h2>

+<%

+	Quantity<Length> q = new LengthAmount(12, SI.METRE);

+%>

+<%= q %>

+</body>

+</html>

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/.classpath b/examples/units/org.eclipse.uomo.examples.units.console/.classpath
index ea2b731..ab2b25d 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/.classpath
+++ b/examples/units/org.eclipse.uomo.examples.units.console/.classpath
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="optional" value="true"/>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
-		<attributes>
-			<attribute name="maven.pomderived" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" output="target/classes" path="src/main/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/.gitignore b/examples/units/org.eclipse.uomo.examples.units.console/.gitignore
index e7da900..1a315ce 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/.gitignore
+++ b/examples/units/org.eclipse.uomo.examples.units.console/.gitignore
@@ -1,3 +1,3 @@
-/target
-/.settings
-/target
+/target

+/.settings

+/target

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/pom.xml b/examples/units/org.eclipse.uomo.examples.units.console/pom.xml
index 34daec7..10faf8a 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/pom.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.console/pom.xml
@@ -1,85 +1,85 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>org.eclipse.uomo.examples.units</artifactId>
-		<groupId>org.eclipse.uomo.examples.units</groupId>
-		<version>0.7.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>org.eclipse.uomo.examples.units.console</artifactId>
-	<name>UOMo Units Console Examples</name>
-	<dependencies>
-		<dependency>
-            <groupId>org.unitsofmeasurement</groupId>
-            <artifactId>unit-api</artifactId>
-		</dependency>	
-        <dependency>
-        	<groupId>org.eclipse.uomo</groupId>
-        	<artifactId>org.eclipse.uomo.units</artifactId>
-        </dependency>	
-		<dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest-all</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-        	<groupId>org.eclipse.uomo</groupId>
-        	<artifactId>org.eclipse.uomo.core</artifactId>   	
-        </dependency>
-        <dependency>
-        	<groupId>com.ibm.icu</groupId>
-        	<artifactId>icu4j</artifactId>
-        </dependency>
-		<dependency>
-			<groupId>org.eclipse</groupId>
-			<artifactId>osgi</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.uomo</groupId>
-			<artifactId>org.eclipse.uomo.util</artifactId>
-		</dependency>
-	</dependencies>
-
-	<!-- ======================================================= -->
-	<!-- Build Settings -->
-	<!-- ======================================================= -->
-	<build>
-		<plugins>
-			<!-- ======================================================= -->
-			<!-- Compilation -->
-			<!-- ======================================================= -->
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<version>2.3.2</version>
-				<configuration>
-					<source>${project.build.javaVersion}</source>
-					<target>${project.build.javaVersion}</target>
-					<encoding>${project.build.sourceEncoding}</encoding>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-	
-	 <!-- ==================================================== -->
-    <!-- Repositories. This is where Maven looks for dependencies. The Maven 
-        repository is implicit and doesn't need to be specified. -->
-    <!-- ==================================================== -->
-    <repositories>
-        <repository>
-            <id>maven-geotoolkit.org</id>
-            <name>GeoToolkit Repository for Maven</name>
-            <url>http://maven.geotoolkit.org/</url>
-        </repository>
-        <repository>
-			<id>eclipse-central</id>
-			<name>Central Eclipse.org Nexus</name>
-			<url>http://maven.eclipse.org/nexus/content/groups/central/</url>
-		</repository>               
-    </repositories>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<artifactId>org.eclipse.uomo.examples.units</artifactId>

+		<groupId>org.eclipse.uomo.examples.units</groupId>

+		<version>0.7.0-SNAPSHOT</version>

+	</parent>

+	<artifactId>org.eclipse.uomo.examples.units.console</artifactId>

+	<name>UOMo Units Console Examples</name>

+	<dependencies>

+		<dependency>

+            <groupId>org.unitsofmeasurement</groupId>

+            <artifactId>unit-api</artifactId>

+		</dependency>	

+        <dependency>

+        	<groupId>org.eclipse.uomo</groupId>

+        	<artifactId>org.eclipse.uomo.units</artifactId>

+        </dependency>	

+		<dependency>

+            <groupId>junit</groupId>

+            <artifactId>junit</artifactId>

+            <scope>test</scope>

+        </dependency>

+        <dependency>

+            <groupId>org.hamcrest</groupId>

+            <artifactId>hamcrest-all</artifactId>

+            <scope>test</scope>

+        </dependency>

+        <dependency>

+        	<groupId>org.eclipse.uomo</groupId>

+        	<artifactId>org.eclipse.uomo.core</artifactId>   	

+        </dependency>

+        <dependency>

+        	<groupId>com.ibm.icu</groupId>

+        	<artifactId>icu4j</artifactId>

+        </dependency>

+		<dependency>

+			<groupId>org.eclipse</groupId>

+			<artifactId>osgi</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.uomo</groupId>

+			<artifactId>org.eclipse.uomo.util</artifactId>

+		</dependency>

+	</dependencies>

+

+	<!-- ======================================================= -->

+	<!-- Build Settings -->

+	<!-- ======================================================= -->

+	<build>

+		<plugins>

+			<!-- ======================================================= -->

+			<!-- Compilation -->

+			<!-- ======================================================= -->

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-compiler-plugin</artifactId>

+				<version>2.3.2</version>

+				<configuration>

+					<source>${project.build.javaVersion}</source>

+					<target>${project.build.javaVersion}</target>

+					<encoding>${project.build.sourceEncoding}</encoding>

+				</configuration>

+			</plugin>

+		</plugins>

+	</build>

+	

+	 <!-- ==================================================== -->

+    <!-- Repositories. This is where Maven looks for dependencies. The Maven 

+        repository is implicit and doesn't need to be specified. -->

+    <!-- ==================================================== -->

+    <repositories>

+        <repository>

+            <id>maven-geotoolkit.org</id>

+            <name>GeoToolkit Repository for Maven</name>

+            <url>http://maven.geotoolkit.org/</url>

+        </repository>

+        <repository>

+			<id>eclipse-central</id>

+			<name>Central Eclipse.org Nexus</name>

+			<url>http://maven.eclipse.org/nexus/content/groups/central/</url>

+		</repository>               

+    </repositories>

 </project>
\ No newline at end of file
diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/etc/org.eclipse.uomo.examples.units.console.launch b/examples/units/org.eclipse.uomo.examples.units.console/src/etc/org.eclipse.uomo.examples.units.console.launch
index 372196f..3ca885e 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/etc/org.eclipse.uomo.examples.units.console.launch
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/etc/org.eclipse.uomo.examples.units.console.launch
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.uomo.examples.units.console"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.uomo.examples.units.console"/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
-<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uomo.examples.units.console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-DconsoleOutput=true"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.uomo.examples.units.console"/>

+</listAttribute>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">

+<listEntry value="4"/>

+</listAttribute>

+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">

+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>

+</listAttribute>

+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.uomo.examples.units.console"/>

+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>

+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>

+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>

+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>

+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uomo.examples.units.console"/>

+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>

+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-DconsoleOutput=true"/>

+</launchConfiguration>

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/Beerfest.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/Beerfest.java
index 0a36570..7577b35 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/Beerfest.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/Beerfest.java
@@ -1,20 +1,20 @@
-package org.eclipse.uomo.examples.units.console.sandbox;
-
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.impl.system.Imperial;
-import org.eclipse.uomo.units.impl.system.USCustomary;
-import org.eclipse.uomo.units.impl.quantity.VolumeAmount;
-import org.unitsofmeasurement.quantity.Volume;
-
-public class Beerfest {
-
-	public static void main(String[] args) {
-		IMeasure<Volume> v= new VolumeAmount(.5d, USCustomary.LITER);
-		System.out.println(v);
-		System.out.print(v.doubleValue(Imperial.PINT)); 
-		System.out.println(" " + Imperial.PINT);
-		System.out.print(v.doubleValue(USCustomary.OUNCE_LIQUID)); 
-		System.out.println(" " + USCustomary.OUNCE_LIQUID);
-	}
-
-}
+package org.eclipse.uomo.examples.units.console.sandbox;

+

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.impl.system.Imperial;

+import org.eclipse.uomo.units.impl.system.USCustomary;

+import org.eclipse.uomo.units.impl.quantity.VolumeAmount;

+import org.unitsofmeasurement.quantity.Volume;

+

+public class Beerfest {

+

+	public static void main(String[] args) {

+		IMeasure<Volume> v= new VolumeAmount(.5d, USCustomary.LITER);

+		System.out.println(v);

+		System.out.print(v.doubleValue(Imperial.PINT)); 

+		System.out.println(" " + Imperial.PINT);

+		System.out.print(v.doubleValue(USCustomary.OUNCE_LIQUID)); 

+		System.out.println(" " + USCustomary.OUNCE_LIQUID);

+	}

+

+}

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/HealthExamples.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/HealthExamples.java
index 8f6d2fa..fd69592 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/HealthExamples.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/HealthExamples.java
@@ -1,45 +1,45 @@
-/**
- * Copyright (c) 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.examples.units.console.sandbox;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.uomo.examples.units.types.Health;
-import org.eclipse.uomo.examples.units.types.HeartRate;
-import org.eclipse.uomo.examples.units.types.HeartRateAmount;
-import org.eclipse.uomo.units.IMeasure;
-
-/**
- * @author Werner Keil
- * @version 0.1
- */
-public class HealthExamples {
-
-	/**
-	 * @param args
-	 */
-	public static void main(String[] args) {
-		List<IMeasure<HeartRate>> rates = new LinkedList<IMeasure<HeartRate>>();
-		int value = 0;
-		for (int i=0; i<50; i++) {
-	        value = (int) (Math.random() * 40 + 50);
-		
-			IMeasure<HeartRate> rate = new HeartRateAmount(value, Health.BPM);
-			rates.add(rate);
-		}
-		
-		for (IMeasure<HeartRate> r : rates) {
-			System.out.println("Rate: " + r);
-		}
-	}
-
-}
+/**

+ * Copyright (c) 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.examples.units.console.sandbox;

+

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.uomo.examples.units.types.Health;

+import org.eclipse.uomo.examples.units.types.HeartRate;

+import org.eclipse.uomo.examples.units.types.HeartRateAmount;

+import org.eclipse.uomo.units.IMeasure;

+

+/**

+ * @author Werner Keil

+ * @version 0.1

+ */

+public class HealthExamples {

+

+	/**

+	 * @param args

+	 */

+	public static void main(String[] args) {

+		List<IMeasure<HeartRate>> rates = new LinkedList<IMeasure<HeartRate>>();

+		int value = 0;

+		for (int i=0; i<50; i++) {

+	        value = (int) (Math.random() * 40 + 50);

+		

+			IMeasure<HeartRate> rate = new HeartRateAmount(value, Health.BPM);

+			rates.add(rate);

+		}

+		

+		for (IMeasure<HeartRate> r : rates) {

+			System.out.println("Rate: " + r);

+		}

+	}

+

+}

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/KawaExample.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/KawaExample.java
index 69ae5b6..b3ef9d3 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/KawaExample.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/KawaExample.java
@@ -1,35 +1,35 @@
-package org.eclipse.uomo.examples.units.console.sandbox;
-
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.SI;
-import org.eclipse.uomo.units.impl.quantity.LengthAmount;
-import org.eclipse.uomo.units.impl.quantity.MassAmount;
-import org.unitsofmeasurement.quantity.Length;
-import org.unitsofmeasurement.quantity.Mass;
-import org.unitsofmeasurement.quantity.Quantity;
-import org.unitsofmeasurement.unit.Unit;
-
-
-public class KawaExample {
-
-	/**
-	 * @param args
-	 */
-	public static void main(String[] args) {
-		Unit<Length> m = SI.METRE;
-		Unit<Mass> g = SI.GRAM;
-		
-		Unit<?> result = g.multiply(m);
-		System.out.println(result);
-		
-		IMeasure<Length> q1 = new LengthAmount(1, m);
-		System.out.println(q1);
-		IMeasure<Mass> q2 = new MassAmount(1, g);
-		System.out.println(q2);
-		Quantity<?> q3 = q1.multiply(q2);
-		System.out.println(q3);
-//		Quantity<Length> q4 = q1.add(q2); // this fails at compile time, not at runtime
-//		System.out.println(q4);
-	}
-
-}
+package org.eclipse.uomo.examples.units.console.sandbox;

+

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.SI;

+import org.eclipse.uomo.units.impl.quantity.LengthAmount;

+import org.eclipse.uomo.units.impl.quantity.MassAmount;

+import org.unitsofmeasurement.quantity.Length;

+import org.unitsofmeasurement.quantity.Mass;

+import org.unitsofmeasurement.quantity.Quantity;

+import org.unitsofmeasurement.unit.Unit;

+

+

+public class KawaExample {

+

+	/**

+	 * @param args

+	 */

+	public static void main(String[] args) {

+		Unit<Length> m = SI.METRE;

+		Unit<Mass> g = SI.GRAM;

+		

+		Unit<?> result = g.multiply(m);

+		System.out.println(result);

+		

+		IMeasure<Length> q1 = new LengthAmount(1, m);

+		System.out.println(q1);

+		IMeasure<Mass> q2 = new MassAmount(1, g);

+		System.out.println(q2);

+		Quantity<?> q3 = q1.multiply(q2);

+		System.out.println(q3);

+//		Quantity<Length> q4 = q1.add(q2); // this fails at compile time, not at runtime

+//		System.out.println(q4);

+	}

+

+}

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/ObsoleteUnitsExample.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/ObsoleteUnitsExample.java
index 6e4a2a0..3cefc34 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/ObsoleteUnitsExample.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/ObsoleteUnitsExample.java
@@ -1,44 +1,44 @@
-/**
- * Copyright (c) 2012, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.examples.units.console.sandbox;
-
-import static org.eclipse.uomo.examples.units.types.GermanObsolete.*;
-import static org.eclipse.uomo.units.impl.system.USCustomary.FOOT;
-import static org.eclipse.uomo.units.SI.*;
-
-import org.eclipse.uomo.examples.units.types.PolishObsolete;
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.impl.BaseAmount;
-import org.unitsofmeasurement.quantity.Length;
-
-/**
- * @author Werner Keil
- *
- */
-public class ObsoleteUnitsExample {
-
-	/**
-	 * @param args
-	 */
-	@SuppressWarnings("deprecation")
-	public static void main(String[] args) {
-		IMeasure<Length> l = BaseAmount.valueOf(10, METRE);
-		System.out.println(l);
-		System.out.println(l.to(FOOT));
-		System.out.println(l.to(FOOT_ZURICH));
-		System.out.println(l.to(STONE_FOOT));
-		System.out.println(l.to(FOOT_LAUSANNE));
-		System.out.println(l.to(ELL_NORTH));
-		System.out.println(l.to(ELL_SOUTH));
-		System.out.println(l.to(PolishObsolete.ELL));
-	}
-
-}
+/**

+ * Copyright (c) 2012, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.examples.units.console.sandbox;

+

+import static org.eclipse.uomo.examples.units.types.GermanObsolete.*;

+import static org.eclipse.uomo.units.impl.system.USCustomary.FOOT;

+import static org.eclipse.uomo.units.SI.*;

+

+import org.eclipse.uomo.examples.units.types.PolishObsolete;

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.impl.BaseAmount;

+import org.unitsofmeasurement.quantity.Length;

+

+/**

+ * @author Werner Keil

+ *

+ */

+public class ObsoleteUnitsExample {

+

+	/**

+	 * @param args

+	 */

+	@SuppressWarnings("deprecation")

+	public static void main(String[] args) {

+		IMeasure<Length> l = BaseAmount.valueOf(10, METRE);

+		System.out.println(l);

+		System.out.println(l.to(FOOT));

+		System.out.println(l.to(FOOT_ZURICH));

+		System.out.println(l.to(STONE_FOOT));

+		System.out.println(l.to(FOOT_LAUSANNE));

+		System.out.println(l.to(ELL_NORTH));

+		System.out.println(l.to(ELL_SOUTH));

+		System.out.println(l.to(PolishObsolete.ELL));

+	}

+

+}

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/RadiologicalEmergencyPreparedness.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/RadiologicalEmergencyPreparedness.java
index 90fefe5..f862ccb 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/RadiologicalEmergencyPreparedness.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/RadiologicalEmergencyPreparedness.java
@@ -1,51 +1,51 @@
-/**
- * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.examples.units.console.sandbox;
-
-import static org.eclipse.uomo.units.SI.Prefix.MILLI;
-import static org.eclipse.uomo.units.SI.*;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.impl.quantity.IonizingRadiationAmount;
-import org.unitsofmeasurement.quantity.IonizingRadiation;
-
-/**
- * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * 
- * @see <a
- *      href="http://www.nema.ne.gov/technological/dose-limits.html">NEMA:
- *      Radiological Emergency Preparedness</a>
- */
-public class RadiologicalEmergencyPreparedness {
-
-	/**
-	 * @param args
-	 */
-	public static void main(String[] args) {
-		Map <IMeasure<IonizingRadiation>, String> repMap = new HashMap<IMeasure<IonizingRadiation>, String>();
-		IonizingRadiationAmount ira = new IonizingRadiationAmount(100, MILLI(ROENTGEN));
-		
-		repMap.put(ira, SandboxMessages.REP_100mR);
-		ira = new IonizingRadiationAmount(1, ROENTGEN);
-		repMap.put(ira, SandboxMessages.REP_1R);
-		ira = new IonizingRadiationAmount(2.5, ROENTGEN);
-		repMap.put(ira, SandboxMessages.REP_2dot5R);
-		
-		for (IMeasure<IonizingRadiation> dosimeterLimit : repMap.keySet()) {			
-			System.out.println(dosimeterLimit + " :: " + repMap.get(dosimeterLimit));
-		}
-		
-	}
-
-}
+/**

+ * Copyright (c) 2005, 2011, Werner Keil, Ikayzo and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.examples.units.console.sandbox;

+

+import static org.eclipse.uomo.units.SI.Prefix.MILLI;

+import static org.eclipse.uomo.units.SI.*;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.impl.quantity.IonizingRadiationAmount;

+import org.unitsofmeasurement.quantity.IonizingRadiation;

+

+/**

+ * @author <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * 

+ * @see <a

+ *      href="http://www.nema.ne.gov/technological/dose-limits.html">NEMA:

+ *      Radiological Emergency Preparedness</a>

+ */

+public class RadiologicalEmergencyPreparedness {

+

+	/**

+	 * @param args

+	 */

+	public static void main(String[] args) {

+		Map <IMeasure<IonizingRadiation>, String> repMap = new HashMap<IMeasure<IonizingRadiation>, String>();

+		IonizingRadiationAmount ira = new IonizingRadiationAmount(100, MILLI(ROENTGEN));

+		

+		repMap.put(ira, SandboxMessages.REP_100mR);

+		ira = new IonizingRadiationAmount(1, ROENTGEN);

+		repMap.put(ira, SandboxMessages.REP_1R);

+		ira = new IonizingRadiationAmount(2.5, ROENTGEN);

+		repMap.put(ira, SandboxMessages.REP_2dot5R);

+		

+		for (IMeasure<IonizingRadiation> dosimeterLimit : repMap.keySet()) {			

+			System.out.println(dosimeterLimit + " :: " + repMap.get(dosimeterLimit));

+		}

+		

+	}

+

+}

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/TemperatureExample.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/TemperatureExample.java
index 9c3fd4a..a813e53 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/TemperatureExample.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/console/sandbox/TemperatureExample.java
@@ -1,36 +1,36 @@
-/**
- * Copyright (c) 2005, 2014, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.examples.units.console.sandbox;
-
-import org.eclipse.uomo.units.AbstractQuantity;
-import org.eclipse.uomo.units.SI;
-import org.eclipse.uomo.units.impl.quantity.TemperatureAmount;
-import org.eclipse.uomo.units.impl.system.USCustomary;
-import org.unitsofmeasurement.quantity.Temperature;
-
-/**
- * @author Werner Keil
- * @version 1.1
- *
- */
-public class TemperatureExample {
-
-	/**
-	 * @param args
-	 */
-	public static void main(String[] args) {
-		TemperatureAmount temp1 = new TemperatureAmount(0, SI.CELSIUS);
-		AbstractQuantity<Temperature> temp2 = temp1.to(SI.KELVIN);
-		AbstractQuantity<Temperature> temp3 = temp1.to(USCustomary.FAHRENHEIT);
-		System.out.println(temp1 + " -> " + temp2 + " -> " + temp3);
-	}
-
-}
+/**

+ * Copyright (c) 2005, 2014, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.examples.units.console.sandbox;

+

+import org.eclipse.uomo.units.AbstractQuantity;

+import org.eclipse.uomo.units.SI;

+import org.eclipse.uomo.units.impl.quantity.TemperatureAmount;

+import org.eclipse.uomo.units.impl.system.USCustomary;

+import org.unitsofmeasurement.quantity.Temperature;

+

+/**

+ * @author Werner Keil

+ * @version 1.1

+ *

+ */

+public class TemperatureExample {

+

+	/**

+	 * @param args

+	 */

+	public static void main(String[] args) {

+		TemperatureAmount temp1 = new TemperatureAmount(0, SI.CELSIUS);

+		AbstractQuantity<Temperature> temp2 = temp1.to(SI.KELVIN);

+		AbstractQuantity<Temperature> temp3 = temp1.to(USCustomary.FAHRENHEIT);

+		System.out.println(temp1 + " -> " + temp2 + " -> " + temp3);

+	}

+

+}

diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/types/DwarfPlanet.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/types/DwarfPlanet.java
index 6f4e8c5..9f8be84 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/types/DwarfPlanet.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/types/DwarfPlanet.java
@@ -1,93 +1,93 @@
-/**
- * Copyright (c) 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.examples.units.types;
-
-import static org.eclipse.uomo.units.SI.*;
-import static org.eclipse.uomo.units.SI.Prefix.KILO;
-import static org.eclipse.uomo.examples.units.types.SolarSystem.G;
-
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.impl.quantity.AccelerationAmount;
-import org.eclipse.uomo.units.impl.quantity.LengthAmount;
-import org.eclipse.uomo.units.impl.quantity.MassAmount;
-import org.unitsofmeasurement.quantity.Acceleration;
-import org.unitsofmeasurement.quantity.Length;
-import org.unitsofmeasurement.quantity.Mass;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.0
- * 
- * This <type>enum</type> is inspired by Josh Bloch's example in <a href="http://www.oracle.com/technetwork/java/effectivejava-136174.html">Effective Java Second Edition</a>
- * 
- * <p>
- * Suppose you want to add data and behavior to an enum. 
- * For example consider <a href="http://en.wikipedia.org/wiki/Dwarf_planet">dwarf planets</a> of the <a href="http://en.wikipedia.org/wiki/Solar_System">solar system</a>. 
- * Each planet knows its mass and radius, and can calculate its surface gravity and the weight of an object on the planet. 
- * Here is how it looks:
- * </p>
- */
-public enum DwarfPlanet {
-	CERES(newMass(9.43e+20, KILOGRAM), newLength(0.4873e6, METRE)),
-    PLUTO(newMass(1.305e+22, KILOGRAM), newLength(1.153e6, METRE)),
-    HAUMEA(newMass(4.006e+21, KILOGRAM), newLength(620, KILO(METRE))),
-    MAKEMAKE(newMass(3e+21, KILOGRAM), newLength(715, KILO(METRE))),
-    ERIS(newMass(1.67e+22, KILOGRAM), newLength(1163, KILO(METRE)));
-
-    private final IMeasure<Mass> mass;   // in kilograms
-
-    private final IMeasure<Length> radius; // in meters
-
-    DwarfPlanet(IMeasure<Mass> mass, IMeasure<Length> radius) {
-        this.mass = mass;
-        this.radius = radius;
-    }
-
-    public IMeasure<Mass> getMass() {
-        return mass;
-    }
-
-    public IMeasure<Length> getRadius() {
-        return radius;
-    }
-
-    public Acceleration surfaceGravity() {
-        double m = mass.doubleValue(KILOGRAM);
-        double r = radius.doubleValue(METRE);
-        return new AccelerationAmount(
-                G * m / (r * r), METRES_PER_SQUARE_SECOND);
-    }
-
-    private static IMeasure<Mass> newMass(double value, Unit<Mass> unit) {
-        return new MassAmount(value, unit);
-    }
-
-    private static IMeasure<Length> newLength(double value, Unit<Length> unit) {
-        return new LengthAmount(value, unit);
-    }
-
-	@Override
-	public String toString() {
-		StringBuilder sb = new StringBuilder(super.toString());
-		sb.append("; ");
-		sb.append(Mass.class.getSimpleName());
-		sb.append(": ");
-		sb.append(getMass());
-		sb.append("; ");
-		sb.append("Radius: ");
-		sb.append(getRadius());
-		sb.append("; ");
-		sb.append("Surface Gravity: ");
-		sb.append(surfaceGravity());
-		return sb.toString();
-	}
+/**

+ * Copyright (c) 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.examples.units.types;

+

+import static org.eclipse.uomo.units.SI.*;

+import static org.eclipse.uomo.units.SI.Prefix.KILO;

+import static org.eclipse.uomo.examples.units.types.SolarSystem.G;

+

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.impl.quantity.AccelerationAmount;

+import org.eclipse.uomo.units.impl.quantity.LengthAmount;

+import org.eclipse.uomo.units.impl.quantity.MassAmount;

+import org.unitsofmeasurement.quantity.Acceleration;

+import org.unitsofmeasurement.quantity.Length;

+import org.unitsofmeasurement.quantity.Mass;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.0

+ * 

+ * This <type>enum</type> is inspired by Josh Bloch's example in <a href="http://www.oracle.com/technetwork/java/effectivejava-136174.html">Effective Java Second Edition</a>

+ * 

+ * <p>

+ * Suppose you want to add data and behavior to an enum. 

+ * For example consider <a href="http://en.wikipedia.org/wiki/Dwarf_planet">dwarf planets</a> of the <a href="http://en.wikipedia.org/wiki/Solar_System">solar system</a>. 

+ * Each planet knows its mass and radius, and can calculate its surface gravity and the weight of an object on the planet. 

+ * Here is how it looks:

+ * </p>

+ */

+public enum DwarfPlanet {

+	CERES(newMass(9.43e+20, KILOGRAM), newLength(0.4873e6, METRE)),

+    PLUTO(newMass(1.305e+22, KILOGRAM), newLength(1.153e6, METRE)),

+    HAUMEA(newMass(4.006e+21, KILOGRAM), newLength(620, KILO(METRE))),

+    MAKEMAKE(newMass(3e+21, KILOGRAM), newLength(715, KILO(METRE))),

+    ERIS(newMass(1.67e+22, KILOGRAM), newLength(1163, KILO(METRE)));

+

+    private final IMeasure<Mass> mass;   // in kilograms

+

+    private final IMeasure<Length> radius; // in meters

+

+    DwarfPlanet(IMeasure<Mass> mass, IMeasure<Length> radius) {

+        this.mass = mass;

+        this.radius = radius;

+    }

+

+    public IMeasure<Mass> getMass() {

+        return mass;

+    }

+

+    public IMeasure<Length> getRadius() {

+        return radius;

+    }

+

+    public Acceleration surfaceGravity() {

+        double m = mass.doubleValue(KILOGRAM);

+        double r = radius.doubleValue(METRE);

+        return new AccelerationAmount(

+                G * m / (r * r), METRES_PER_SQUARE_SECOND);

+    }

+

+    private static IMeasure<Mass> newMass(double value, Unit<Mass> unit) {

+        return new MassAmount(value, unit);

+    }

+

+    private static IMeasure<Length> newLength(double value, Unit<Length> unit) {

+        return new LengthAmount(value, unit);

+    }

+

+	@Override

+	public String toString() {

+		StringBuilder sb = new StringBuilder(super.toString());

+		sb.append("; ");

+		sb.append(Mass.class.getSimpleName());

+		sb.append(": ");

+		sb.append(getMass());

+		sb.append("; ");

+		sb.append("Radius: ");

+		sb.append(getRadius());

+		sb.append("; ");

+		sb.append("Surface Gravity: ");

+		sb.append(surfaceGravity());

+		return sb.toString();

+	}

 }
\ No newline at end of file
diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/types/Planet.java b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/types/Planet.java
index 957c4b8..276cae7 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/types/Planet.java
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/java/org/eclipse/uomo/examples/units/types/Planet.java
@@ -1,96 +1,96 @@
-/**
- * Copyright (c) 2005, 2013, Werner Keil and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Werner Keil - initial API and implementation
- */
-package org.eclipse.uomo.examples.units.types;
-
-import static org.eclipse.uomo.units.SI.*;
-import static org.eclipse.uomo.examples.units.types.SolarSystem.G;
-
-import org.eclipse.uomo.units.IMeasure;
-import org.eclipse.uomo.units.impl.quantity.AccelerationAmount;
-import org.eclipse.uomo.units.impl.quantity.LengthAmount;
-import org.eclipse.uomo.units.impl.quantity.MassAmount;
-import org.unitsofmeasurement.quantity.Acceleration;
-import org.unitsofmeasurement.quantity.Length;
-import org.unitsofmeasurement.quantity.Mass;
-import org.unitsofmeasurement.unit.Unit;
-
-/**
- * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>
- * @version 1.0.2
- * 
- * This <type>enum</type> is inspired by Josh Bloch's example in <a href="http://www.oracle.com/technetwork/java/effectivejava-136174.html">Effective Java Second Edition</a>
- * 
- * <p>
- * Suppose you want to add data and behavior to an enum. 
- * For example consider <a href="http://en.wikipedia.org/wiki/Planet">planets</a> of the <a href="http://en.wikipedia.org/wiki/Solar_System">solar system</a>.  
- * Each planet knows its mass and radius, and can calculate its surface gravity and the weight of an object on the planet. 
- * Here is how it looks:
- * </p>
- */
-public enum Planet {
-
-    MERCURY(newMass(3.303e+23, KILOGRAM), newLength(2.4397e6, METRE)),
-    VENUS(newMass(4.869e+24, KILOGRAM), newLength(6.0518e6, METRE)),
-    EARTH(newMass(5.976e+24, KILOGRAM), newLength(6.37814e6, METRE)),
-    MARS(newMass(6.421e+23, KILOGRAM), newLength(3.3972e6, METRE)),
-    JUPITER(newMass(1.9e+27, KILOGRAM), newLength(7.1492e7, METRE)),
-    SATURN(newMass(5.688e+26, KILOGRAM), newLength(6.0268e7, METRE)),
-    URANUS(newMass(8.686e+25, KILOGRAM), newLength(2.5559e7, METRE)),
-    NEPTUNE(newMass(1.024e+26, KILOGRAM), newLength(2.4746e7, METRE));
-
-    private final IMeasure<Mass> mass;   // in kilograms
-
-    private final IMeasure<Length> radius; // in meters
-
-    Planet(IMeasure<Mass> mass, IMeasure<Length> radius) {
-        this.mass = mass;
-        this.radius = radius;
-    }
-
-    public IMeasure<Mass> getMass() {
-        return mass;
-    }
-
-    public IMeasure<Length> getRadius() {
-        return radius;
-    }
-
-    public Acceleration surfaceGravity() {
-        double m = mass.doubleValue(KILOGRAM);
-        double r = radius.doubleValue(METRE);
-        return new AccelerationAmount(
-                G * m / (r * r), METRES_PER_SQUARE_SECOND);
-    }
-
-    private static IMeasure<Mass> newMass(double value, Unit<Mass> unit) {
-        return new MassAmount(value, unit);
-    }
-
-    private static IMeasure<Length> newLength(double value, Unit<Length> unit) {
-        return new LengthAmount(value, unit);
-    }
-
-	@Override
-	public String toString() {
-		StringBuilder sb = new StringBuilder(super.toString());
-		sb.append("; ");
-		sb.append(Mass.class.getSimpleName());
-		sb.append(": ");
-		sb.append(getMass());
-		sb.append("; ");
-		sb.append(Messages.Planet_Radius);
-		sb.append(getRadius());
-		sb.append("; ");
-		sb.append("Surface Gravity: ");
-		sb.append(surfaceGravity());
-		return sb.toString();
-	}
+/**

+ * Copyright (c) 2005, 2013, Werner Keil and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Werner Keil - initial API and implementation

+ */

+package org.eclipse.uomo.examples.units.types;

+

+import static org.eclipse.uomo.units.SI.*;

+import static org.eclipse.uomo.examples.units.types.SolarSystem.G;

+

+import org.eclipse.uomo.units.IMeasure;

+import org.eclipse.uomo.units.impl.quantity.AccelerationAmount;

+import org.eclipse.uomo.units.impl.quantity.LengthAmount;

+import org.eclipse.uomo.units.impl.quantity.MassAmount;

+import org.unitsofmeasurement.quantity.Acceleration;

+import org.unitsofmeasurement.quantity.Length;

+import org.unitsofmeasurement.quantity.Mass;

+import org.unitsofmeasurement.unit.Unit;

+

+/**

+ * @author  <a href="mailto:uomo@catmedia.us">Werner Keil</a>

+ * @version 1.0.2

+ * 

+ * This <type>enum</type> is inspired by Josh Bloch's example in <a href="http://www.oracle.com/technetwork/java/effectivejava-136174.html">Effective Java Second Edition</a>

+ * 

+ * <p>

+ * Suppose you want to add data and behavior to an enum. 

+ * For example consider <a href="http://en.wikipedia.org/wiki/Planet">planets</a> of the <a href="http://en.wikipedia.org/wiki/Solar_System">solar system</a>.  

+ * Each planet knows its mass and radius, and can calculate its surface gravity and the weight of an object on the planet. 

+ * Here is how it looks:

+ * </p>

+ */

+public enum Planet {

+

+    MERCURY(newMass(3.303e+23, KILOGRAM), newLength(2.4397e6, METRE)),

+    VENUS(newMass(4.869e+24, KILOGRAM), newLength(6.0518e6, METRE)),

+    EARTH(newMass(5.976e+24, KILOGRAM), newLength(6.37814e6, METRE)),

+    MARS(newMass(6.421e+23, KILOGRAM), newLength(3.3972e6, METRE)),

+    JUPITER(newMass(1.9e+27, KILOGRAM), newLength(7.1492e7, METRE)),

+    SATURN(newMass(5.688e+26, KILOGRAM), newLength(6.0268e7, METRE)),

+    URANUS(newMass(8.686e+25, KILOGRAM), newLength(2.5559e7, METRE)),

+    NEPTUNE(newMass(1.024e+26, KILOGRAM), newLength(2.4746e7, METRE));

+

+    private final IMeasure<Mass> mass;   // in kilograms

+

+    private final IMeasure<Length> radius; // in meters

+

+    Planet(IMeasure<Mass> mass, IMeasure<Length> radius) {

+        this.mass = mass;

+        this.radius = radius;

+    }

+

+    public IMeasure<Mass> getMass() {

+        return mass;

+    }

+

+    public IMeasure<Length> getRadius() {

+        return radius;

+    }

+

+    public Acceleration surfaceGravity() {

+        double m = mass.doubleValue(KILOGRAM);

+        double r = radius.doubleValue(METRE);

+        return new AccelerationAmount(

+                G * m / (r * r), METRES_PER_SQUARE_SECOND);

+    }

+

+    private static IMeasure<Mass> newMass(double value, Unit<Mass> unit) {

+        return new MassAmount(value, unit);

+    }

+

+    private static IMeasure<Length> newLength(double value, Unit<Length> unit) {

+        return new LengthAmount(value, unit);

+    }

+

+	@Override

+	public String toString() {

+		StringBuilder sb = new StringBuilder(super.toString());

+		sb.append("; ");

+		sb.append(Mass.class.getSimpleName());

+		sb.append(": ");

+		sb.append(getMass());

+		sb.append("; ");

+		sb.append(Messages.Planet_Radius);

+		sb.append(getRadius());

+		sb.append("; ");

+		sb.append("Surface Gravity: ");

+		sb.append(surfaceGravity());

+		return sb.toString();

+	}

 }
\ No newline at end of file
diff --git a/examples/units/org.eclipse.uomo.examples.units.console/src/main/resources/org/eclipse/uomo/examples/units/types/messages.properties b/examples/units/org.eclipse.uomo.examples.units.console/src/main/resources/org/eclipse/uomo/examples/units/types/messages.properties
index e4210f9..a5a1ce1 100644
--- a/examples/units/org.eclipse.uomo.examples.units.console/src/main/resources/org/eclipse/uomo/examples/units/types/messages.properties
+++ b/examples/units/org.eclipse.uomo.examples.units.console/src/main/resources/org/eclipse/uomo/examples/units/types/messages.properties
@@ -1,21 +1,21 @@
-#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
-#
-# Copyright (c) 2005, 2013, Werner Keil and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#    Werner Keil - initial API and implementation
-#
-
-Planet_Radius = Radius:
-
-Planet_SurfaceWeight = Surface Weight:
-
-Planet_SurfaceGravity = Surface Gravity:
-
-Planet_Usage = Usage
-
+#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)

+#

+# Copyright (c) 2005, 2013, Werner Keil and others.

+# All rights reserved. This program and the accompanying materials

+# are made available under the terms of the Eclipse Public License v1.0

+# which accompanies this distribution, and is available at

+# http://www.eclipse.org/legal/epl-v10.html

+#

+# Contributors:

+#    Werner Keil - initial API and implementation

+#

+

+Planet_Radius = Radius:

+

+Planet_SurfaceWeight = Surface Weight:

+

+Planet_SurfaceGravity = Surface Gravity:

+

+Planet_Usage = Usage

+

 BEAT = b
\ No newline at end of file
diff --git a/examples/units/org.eclipse.uomo.examples.units.pluginsample/.gitignore b/examples/units/org.eclipse.uomo.examples.units.pluginsample/.gitignore
index d90e434..c503453 100644
--- a/examples/units/org.eclipse.uomo.examples.units.pluginsample/.gitignore
+++ b/examples/units/org.eclipse.uomo.examples.units.pluginsample/.gitignore
@@ -1,2 +1,2 @@
-/.settings
-/target
+/.settings

+/target

diff --git a/examples/units/org.eclipse.uomo.examples.units.pluginsample/META-INF/MANIFEST.MF b/examples/units/org.eclipse.uomo.examples.units.pluginsample/META-INF/MANIFEST.MF
index e8594a8..7dc0f78 100644
--- a/examples/units/org.eclipse.uomo.examples.units.pluginsample/META-INF/MANIFEST.MF
+++ b/examples/units/org.eclipse.uomo.examples.units.pluginsample/META-INF/MANIFEST.MF
@@ -1,16 +1,16 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: UOMoPluginSample
-Bundle-SymbolicName: UOMoPluginSample; singleton:=true
-Bundle-Version: 0.1.0.SNAPSHOT
-Bundle-Activator: org.eclipse.uomo.examples.units.pluginsample.Activator
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.unitsofmeasurement.unit-api;bundle-version="0.7.0",
- org.eclipse.uomo.core;bundle-version="0.2.0",
- org.eclipse.uomo.units;bundle-version="0.5.0"
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,
- OSGi/Minimum-1.1
-Export-Package: org.eclipse.uomo.examples.units.pluginsample,
- org.eclipse.uomo.examples.units.pluginsample.views
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: UOMoPluginSample

+Bundle-SymbolicName: UOMoPluginSample; singleton:=true

+Bundle-Version: 0.1.0.SNAPSHOT

+Bundle-Activator: org.eclipse.uomo.examples.units.pluginsample.Activator

+Require-Bundle: org.eclipse.ui,

+ org.eclipse.core.runtime,

+ org.unitsofmeasurement.unit-api;bundle-version="0.7.0",

+ org.eclipse.uomo.core;bundle-version="0.2.0",

+ org.eclipse.uomo.units;bundle-version="0.5.0"

+Bundle-ActivationPolicy: lazy

+Bundle-RequiredExecutionEnvironment: J2SE-1.5,

+ OSGi/Minimum-1.1

+Export-Package: org.eclipse.uomo.examples.units.pluginsample,

+ org.eclipse.uomo.examples.units.pluginsample.views

diff --git a/examples/units/org.eclipse.uomo.examples.units.pluginsample/build.properties b/examples/units/org.eclipse.uomo.examples.units.pluginsample/build.properties
index 80bc250..ec21ee7 100644
--- a/examples/units/org.eclipse.uomo.examples.units.pluginsample/build.properties
+++ b/examples/units/org.eclipse.uomo.examples.units.pluginsample/build.properties
@@ -1,6 +1,6 @@
-source.. = src/main/java/,\
-           src/main/resources/,\
-           src/test/java/,\
-           src/test/resources/
-bin.includes = META-INF/,\
-               .
+source.. = src/main/java/,\

+           src/main/resources/,\

+           src/test/java/,\

+           src/test/resources/

+bin.includes = META-INF/,\

+               .

diff --git a/examples/units/org.eclipse.uomo.examples.units.pluginsample/contexts.xml b/examples/units/org.eclipse.uomo.examples.units.pluginsample/contexts.xml
index 02e26e4..f786995 100644
--- a/examples/units/org.eclipse.uomo.examples.units.pluginsample/contexts.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.pluginsample/contexts.xml
@@ -1,12 +1,12 @@
-<contexts>
-	<context id="viewer" title="Sample View">
-		<description>This is the context help for the sample view with a table viewer. It was generated by a PDE template.</description>
-		<topic href="/PLUGINS_ROOT/org.eclipse.platform.doc.isv/guide/ua_help_context.htm" label="Context-sensitive help">
-			<enablement>
-				<with variable="platform">
-	            	<test property="org.eclipse.core.runtime.isBundleInstalled" args="org.eclipse.platform.doc.isv"/>
-	     		</with>
-			</enablement>
-		</topic>
-	</context>
-</contexts>
+<contexts>

+	<context id="viewer" title="Sample View">

+		<description>This is the context help for the sample view with a table viewer. It was generated by a PDE template.</description>

+		<topic href="/PLUGINS_ROOT/org.eclipse.platform.doc.isv/guide/ua_help_context.htm" label="Context-sensitive help">

+			<enablement>

+				<with variable="platform">

+	            	<test property="org.eclipse.core.runtime.isBundleInstalled" args="org.eclipse.platform.doc.isv"/>

+	     		</with>

+			</enablement>

+		</topic>

+	</context>

+</contexts>

diff --git a/examples/units/org.eclipse.uomo.examples.units.pluginsample/pom.xml b/examples/units/org.eclipse.uomo.examples.units.pluginsample/pom.xml
index 21931d2..37bc23c 100644
--- a/examples/units/org.eclipse.uomo.examples.units.pluginsample/pom.xml
+++ b/examples/units/org.eclipse.uomo.examples.units.pluginsample/pom.xml
@@ -1,32 +1,32 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>org.eclipse.uomo.examples.units</artifactId>
-    <groupId>org.eclipse.uomo.examples</groupId>
-    <version>0.1.0.SNAPSHOT</version>
-  </parent>
-  <artifactId>org.eclipse.uomo.examples.units.pluginsample</artifactId>
-  <name>UOMo Units Plugin Sample</name>
-  <dependencies>
-  	<dependency>
-  		<groupId>org.eclipse.uomo</groupId>
-  		<artifactId>org.eclipse.uomo.core</artifactId>
-  		<version>0.2.0.SNAPSHOT</version>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>org.unitsofmeasurement</groupId>
-  		<artifactId>unit-api</artifactId>
-  		<version>0.6.1</version>
-  		<type>bundle</type>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>org.eclipse.uomo</groupId>
-  		<artifactId>org.eclipse.uomo.units</artifactId>
-  		<version>0.7.0.SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>
-  </dependencies>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <artifactId>org.eclipse.uomo.examples.units</artifactId>

+    <groupId>org.eclipse.uomo.examples</groupId>

+    <version>0.1.0.SNAPSHOT</version>

+  </parent>

+  <artifactId>org.eclipse.uomo.examples.units.pluginsample</artifactId>

+  <name>UOMo Units Plugin Sample</name>

+  <dependencies>

+  	<dependency>

+  		<groupId>org.eclipse.uomo</groupId>

+  		<artifactId>org.eclipse.uomo.core</artifactId>

+  		<version>0.2.0.SNAPSHOT</version>

+  		<scope>compile</scope>

+  	</dependency>

+  	<dependency>

+  		<groupId>org.unitsofmeasurement</groupId>

+  		<artifactId>unit-api</artifactId>

+  		<version>0.6.1</version>

+  		<type>bundle</type>

+  		<scope>compile</scope>

+  	</dependency>

+  	<dependency>

+  		<groupId>org.eclipse.uomo</groupId>

+  		<artifactId>org.eclipse.uomo.units</artifactId>

+  		<version>0.7.0.SNAPSHOT</version>

+  		<type>jar</type>

+  		<scope>compile</scope>

+  	</dependency>

+  </dependencies>

 </project>
\ No newline at end of file
diff --git a/examples/units/org.eclipse.uomo.examples.units.pluginsample/src/main/java/org/eclipse/uomo/examples/units/pluginsample/views/SampleView.java b/examples/units/org.eclipse.uomo.examples.units.pluginsample/src/main/java/org/eclipse/uomo/examples/units/pluginsample/views/SampleView.java
index cd05dac..3415751 100644
--- a/examples/units/org.eclipse.uomo.examples.units.pluginsample/src/main/java/org/eclipse/uomo/examples/units/pluginsample/views/SampleView.java
+++ b/examples/units/org.eclipse.uomo.examples.units.pluginsample/src/main/java/org/eclipse/uomo/examples/units/pluginsample/views/SampleView.java
@@ -1,199 +1,199 @@
-package org.eclipse.uomo.examples.units.pluginsample.views;
-
-import static org.eclipse.uomo.units.SI.*;
-import static org.eclipse.uomo.units.impl.system.USCustomary.LITER;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.ui.*;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.SWT;
-
-import org.eclipse.uomo.units.impl.quantity.*;
-
-/**
- * This sample class demonstrates how to plug-in a new
- * workbench view. The view shows data obtained from the
- * model. The sample creates a dummy model on the fly,
- * but a real implementation would connect to the model
- * available either in this or another plug-in (e.g. the workspace).
- * The view is connected to the model using a content provider.
- * <p>
- * The view uses a label provider to define how model
- * objects should be presented in the view. Each
- * view can present the same model objects using
- * different labels and icons, if needed. Alternatively,
- * a single label provider can be shared between views
- * in order to ensure that objects of the same type are
- * presented in the same way everywhere.
- * <p>
- */
-
-public class SampleView extends ViewPart {
-
-	/**
-	 * The ID of the view as specified by the extension.
-	 */
-	public static final String ID = "uomopluginsample.views.SampleView";
-
-	private TableViewer viewer;
-	private Action action1;
-	private Action action2;
-	private Action doubleClickAction;
-	private final LengthAmount length;
-	private final MassAmount mass;
-	private final VolumeAmount volume;
-	
-	/*
-	 * The content provider class is responsible for
-	 * providing objects to the view. It can wrap
-	 * existing objects in adapters or simply return
-	 * objects as-is. These objects may be sensitive
-	 * to the current input of the view, or ignore
-	 * it and always show the same content 
-	 * (like Task List, for example).
-	 */
-	 
-	class ViewContentProvider implements IStructuredContentProvider {
-		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
-		}
-		public void dispose() {
-		}
-		public Object[] getElements(Object parent) {
-			return new Object[] { length, mass, volume };
-		}
-	}
-	class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
-		public String getColumnText(Object obj, int index) {
-			return getText(obj);
-		}
-		public Image getColumnImage(Object obj, int index) {
-			return getImage(obj);
-		}
-		public Image getImage(Object obj) {
-			return PlatformUI.getWorkbench().
-					getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
-		}
-	}
-	class NameSorter extends ViewerSorter {
-	}
-
-	/**
-	 * The constructor.
-	 */
-	public SampleView() {
-		length = new LengthAmount(1,METRE);
-		mass = new MassAmount(2, KILOGRAM);
-		volume = new VolumeAmount(3, LITER);
-	}
-
-	/**
-	 * This is a callback that will allow us
-	 * to create the viewer and initialize it.
-	 */
-	public void createPartControl(Composite parent) {
-		viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-		viewer.setContentProvider(new ViewContentProvider());
-		viewer.setLabelProvider(new ViewLabelProvider());
-		viewer.setSorter(new NameSorter());
-		viewer.setInput(getViewSite());
-
-		// Create the help context id for the viewer's control
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "UOMoPluginSample.viewer");
-		makeActions();
-		hookContextMenu();
-		hookDoubleClickAction();
-		contributeToActionBars();
-	}
-
-	private void hookContextMenu() {
-		MenuManager menuMgr = new MenuManager("#PopupMenu");
-		menuMgr.setRemoveAllWhenShown(true);
-		menuMgr.addMenuListener(new IMenuListener() {
-			public void menuAboutToShow(IMenuManager manager) {
-				SampleView.this.fillContextMenu(manager);
-			}
-		});
-		Menu menu = menuMgr.createContextMenu(viewer.getControl());
-		viewer.getControl().setMenu(menu);
-		getSite().registerContextMenu(menuMgr, viewer);
-	}
-
-	private void contributeToActionBars() {
-		IActionBars bars = getViewSite().getActionBars();
-		fillLocalPullDown(bars.getMenuManager());
-		fillLocalToolBar(bars.getToolBarManager());
-	}
-
-	private void fillLocalPullDown(IMenuManager manager) {
-		manager.add(action1);
-		manager.add(new Separator());
-		manager.add(action2);
-	}
-
-	private void fillContextMenu(IMenuManager manager) {
-		manager.add(action1);
-		manager.add(action2);
-		// Other plug-ins can contribute there actions here
-		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-	}
-	
-	private void fillLocalToolBar(IToolBarManager manager) {
-		manager.add(action1);
-		manager.add(action2);
-	}
-
-	private void makeActions() {
-		action1 = new Action() {
-			public void run() {
-				showMessage("Action 1 executed");
-			}
-		};
-		action1.setText("Action 1");
-		action1.setToolTipText("Action 1 tooltip");
-		action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
-			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
-		
-		action2 = new Action() {
-			public void run() {
-				showMessage("Action 2 executed");
-			}
-		};
-		action2.setText("Action 2");
-		action2.setToolTipText("Action 2 tooltip");
-		action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
-				getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
-		doubleClickAction = new Action() {
-			public void run() {
-				ISelection selection = viewer.getSelection();
-				Object obj = ((IStructuredSelection)selection).getFirstElement();
-				showMessage("Double-click detected on "+obj.toString());
-			}
-		};
-	}
-
-	private void hookDoubleClickAction() {
-		viewer.addDoubleClickListener(new IDoubleClickListener() {
-			public void doubleClick(DoubleClickEvent event) {
-				doubleClickAction.run();
-			}
-		});
-	}
-	private void showMessage(String message) {
-		MessageDialog.openInformation(
-			viewer.getControl().getShell(),
-			"Sample View",
-			message);
-	}
-
-	/**
-	 * Passing the focus request to the viewer's control.
-	 */
-	public void setFocus() {
-		viewer.getControl().setFocus();
-	}
+package org.eclipse.uomo.examples.units.pluginsample.views;

+

+import static org.eclipse.uomo.units.SI.*;

+import static org.eclipse.uomo.units.impl.system.USCustomary.LITER;

+

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.ui.part.*;

+import org.eclipse.jface.viewers.*;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.jface.action.*;

+import org.eclipse.jface.dialogs.MessageDialog;

+import org.eclipse.ui.*;

+import org.eclipse.swt.widgets.Menu;

+import org.eclipse.swt.SWT;

+

+import org.eclipse.uomo.units.impl.quantity.*;

+

+/**

+ * This sample class demonstrates how to plug-in a new

+ * workbench view. The view shows data obtained from the

+ * model. The sample creates a dummy model on the fly,

+ * but a real implementation would connect to the model

+ * available either in this or another plug-in (e.g. the workspace).

+ * The view is connected to the model using a content provider.

+ * <p>

+ * The view uses a label provider to define how model

+ * objects should be presented in the view. Each

+ * view can present the same model objects using

+ * different labels and icons, if needed. Alternatively,

+ * a single label provider can be shared between views

+ * in order to ensure that objects of the same type are

+ * presented in the same way everywhere.

+ * <p>

+ */

+

+public class SampleView extends ViewPart {

+

+	/**

+	 * The ID of the view as specified by the extension.

+	 */

+	public static final String ID = "uomopluginsample.views.SampleView";

+

+	private TableViewer viewer;

+	private Action action1;

+	private Action action2;

+	private Action doubleClickAction;

+	private final LengthAmount length;

+	private final MassAmount mass;

+	private final VolumeAmount volume;

+	

+	/*

+	 * The content provider class is responsible for

+	 * providing objects to the view. It can wrap

+	 * existing objects in adapters or simply return

+	 * objects as-is. These objects may be sensitive

+	 * to the current input of the view, or ignore

+	 * it and always show the same content 

+	 * (like Task List, for example).

+	 */

+	 

+	class ViewContentProvider implements IStructuredContentProvider {

+		public void inputChanged(Viewer v, Object oldInput, Object newInput) {

+		}

+		public void dispose() {

+		}

+		public Object[] getElements(Object parent) {

+			return new Object[] { length, mass, volume };

+		}

+	}

+	class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {

+		public String getColumnText(Object obj, int index) {

+			return getText(obj);

+		}

+		public Image getColumnImage(Object obj, int index) {

+			return getImage(obj);

+		}

+		public Image getImage(Object obj) {

+			return PlatformUI.getWorkbench().

+					getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);

+		}

+	}

+	class NameSorter extends ViewerSorter {

+	}

+

+	/**

+	 * The constructor.

+	 */

+	public SampleView() {

+		length = new LengthAmount(1,METRE);

+		mass = new MassAmount(2, KILOGRAM);

+		volume = new VolumeAmount(3, LITER);

+	}

+

+	/**

+	 * This is a callback that will allow us

+	 * to create the viewer and initialize it.

+	 */

+	public void createPartControl(Composite parent) {

+		viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);

+		viewer.setContentProvider(new ViewContentProvider());

+		viewer.setLabelProvider(new ViewLabelProvider());

+		viewer.setSorter(new NameSorter());

+		viewer.setInput(getViewSite());

+

+		// Create the help context id for the viewer's control

+		PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "UOMoPluginSample.viewer");

+		makeActions();

+		hookContextMenu();

+		hookDoubleClickAction();

+		contributeToActionBars();

+	}

+

+	private void hookContextMenu() {

+		MenuManager menuMgr = new MenuManager("#PopupMenu");

+		menuMgr.setRemoveAllWhenShown(true);

+		menuMgr.addMenuListener(new IMenuListener() {

+			public void menuAboutToShow(IMenuManager manager) {

+				SampleView.this.fillContextMenu(manager);

+			}

+		});

+		Menu menu = menuMgr.createContextMenu(viewer.getControl());

+		viewer.getControl().setMenu(menu);

+		getSite().registerContextMenu(menuMgr, viewer);

+	}

+

+	private void contributeToActionBars() {

+		IActionBars bars = getViewSite().getActionBars();

+		fillLocalPullDown(bars.getMenuManager());

+		fillLocalToolBar(bars.getToolBarManager());

+	}

+

+	private void fillLocalPullDown(IMenuManager manager) {

+		manager.add(action1);

+		manager.add(new Separator());

+		manager.add(action2);

+	}

+

+	private void fillContextMenu(IMenuManager manager) {

+		manager.add(action1);

+		manager.add(action2);

+		// Other plug-ins can contribute there actions here

+		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));

+	}

+	

+	private void fillLocalToolBar(IToolBarManager manager) {

+		manager.add(action1);

+		manager.add(action2);

+	}

+

+	private void makeActions() {

+		action1 = new Action() {

+			public void run() {

+				showMessage("Action 1 executed");

+			}

+		};

+		action1.setText("Action 1");

+		action1.setToolTipText("Action 1 tooltip");

+		action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().

+			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));

+		

+		action2 = new Action() {

+			public void run() {

+				showMessage("Action 2 executed");

+			}

+		};

+		action2.setText("Action 2");

+		action2.setToolTipText("Action 2 tooltip");

+		action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().

+				getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));

+		doubleClickAction = new Action() {

+			public void run() {

+				ISelection selection = viewer.getSelection();

+				Object obj = ((IStructuredSelection)selection).getFirstElement();

+				showMessage("Double-click detected on "+obj.toString());

+			}

+		};

+	}

+

+	private void hookDoubleClickAction() {

+		viewer.addDoubleClickListener(new IDoubleClickListener() {

+			public void doubleClick(DoubleClickEvent event) {

+				doubleClickAction.run();

+			}

+		});

+	}

+	private void showMessage(String message) {

+		MessageDialog.openInformation(

+			viewer.getControl().getShell(),

+			"Sample View",

+			message);

+	}

+

+	/**

+	 * Passing the focus request to the viewer's control.

+	 */

+	public void setFocus() {

+		viewer.getControl().setFocus();

+	}

 }
\ No newline at end of file
diff --git a/examples/units/pom.xml b/examples/units/pom.xml
index a5423d5..290c382 100644
--- a/examples/units/pom.xml
+++ b/examples/units/pom.xml
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<artifactId>org.eclipse.uomo.examples</artifactId>
-		<groupId>org.eclipse.uomo</groupId>
-		<version>0.7.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>org.eclipse.uomo.examples.units</artifactId>
-	<packaging>pom</packaging>
-	<name>Eclipse UOMo Units Examples</name>
-	<modules>
-	   <module>org.eclipse.uomo.examples.units.console</module>
-	   <!--  >module>org.eclipse.uomo.examples.units.pluginsample</module -->
-    <module>org.eclipse.uomo.examples.units.android</module>
-  </modules>
-	<!-- ==================================================== -->
-    <!-- Repositories. This is where Maven looks for dependencies. 
-         The Maven repository is implicit and doesn't need 
-         to be specified. -->
-    <!-- ==================================================== -->
-    <repositories>
-        <repository>
-            <id>maven-geotoolkit.org</id>
-            <name>GeoToolkit Repository for Maven</name>
-            <url>http://maven.geotoolkit.org/</url>
-        </repository>
-        
-        <repository>
-            <id>OpenL10n</id>
-            <name>Openl10.net</name>
-            <url>http://nexus.openl10n.net/content/groups/public/</url>
-        </repository>
-    </repositories>
-	
-    <groupId>org.eclipse.uomo.examples.units</groupId>
+<?xml version="1.0" encoding="UTF-8"?>

+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<artifactId>org.eclipse.uomo.examples</artifactId>

+		<groupId>org.eclipse.uomo</groupId>

+		<version>0.7.0-SNAPSHOT</version>

+	</parent>

+	<artifactId>org.eclipse.uomo.examples.units</artifactId>

+	<packaging>pom</packaging>

+	<name>Eclipse UOMo Units Examples</name>

+	<modules>

+	   <module>org.eclipse.uomo.examples.units.console</module>

+	   <!--  >module>org.eclipse.uomo.examples.units.pluginsample</module -->

+    <module>org.eclipse.uomo.examples.units.android</module>

+  </modules>

+	<!-- ==================================================== -->

+    <!-- Repositories. This is where Maven looks for dependencies. 

+         The Maven repository is implicit and doesn't need 

+         to be specified. -->

+    <!-- ==================================================== -->

+    <repositories>

+        <repository>

+            <id>maven-geotoolkit.org</id>

+            <name>GeoToolkit Repository for Maven</name>

+            <url>http://maven.geotoolkit.org/</url>

+        </repository>

+        

+        <repository>

+            <id>OpenL10n</id>

+            <name>Openl10.net</name>

+            <url>http://nexus.openl10n.net/content/groups/public/</url>

+        </repository>

+    </repositories>

+	

+    <groupId>org.eclipse.uomo.examples.units</groupId>

 </project>
\ No newline at end of file
diff --git a/features/.gitignore b/features/.gitignore
index 834befa..95cea85 100644
--- a/features/.gitignore
+++ b/features/.gitignore
@@ -1,3 +1,3 @@
-/src
-/.settings
-/target
+/src

+/.settings

+/target

diff --git a/features/org.eclipse.uomo.feature/.gitignore b/features/org.eclipse.uomo.feature/.gitignore
index e7da900..1a315ce 100644
--- a/features/org.eclipse.uomo.feature/.gitignore
+++ b/features/org.eclipse.uomo.feature/.gitignore
@@ -1,3 +1,3 @@
-/target
-/.settings
-/target
+/target

+/.settings

+/target

diff --git a/features/org.eclipse.uomo.feature/.project b/features/org.eclipse.uomo.feature/.project
index 2511082..09dd5a1 100644
--- a/features/org.eclipse.uomo.feature/.project
+++ b/features/org.eclipse.uomo.feature/.project
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.maven.ide.eclipse.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.maven.ide.eclipse.maven2Nature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.feature</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.wst.common.project.facet.core.builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.maven.ide.eclipse.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.FeatureBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.maven.ide.eclipse.maven2Nature</nature>

+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>

+		<nature>org.eclipse.pde.FeatureNature</nature>

+	</natures>

+</projectDescription>

diff --git a/features/org.eclipse.uomo.feature/feature.xml b/features/org.eclipse.uomo.feature/feature.xml
index b378ce8..069828d 100644
--- a/features/org.eclipse.uomo.feature/feature.xml
+++ b/features/org.eclipse.uomo.feature/feature.xml
@@ -1,206 +1,206 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.uomo.feature"
-      label="Eclipse UOMo"
-      version="0.7.0.qualifier"
-      provider-name="Eclipse.org"
-      plugin="org.eclipse.uomo.ui">
-
-   <description url="http://www.eclipse.org/uomo">
-      Eclipse UOMo
-   </description>
-
-   <copyright url="http://www.example.com/copyright">
-      Eclipse Foundation Software User Agreement
-
-February 1, 2011
-
-Usage Of Content
-
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.
-
-Applicable Licenses
-
-Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, &quot;Program&quot; will mean the Content.
-
-Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).
-
-Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).
-Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named &quot;plugins&quot;.
-A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;. Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
-Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.
-The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:
-
-The top-level (root) directory
-Plug-in and Fragment directories
-Inside Plug-ins and Fragments packaged as JARs
-Sub-directories of the directory named &quot;src&quot; of certain Plug-ins
-Feature directories
-Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.
-
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
-
-Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)
-Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
-Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
-Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)
-Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)
-Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.
-
-Use of Provisioning Technology
-
-The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to install, extend and update Eclipse-based products. Information about packaging Installable Software is available at http://eclipse.org/equinox/p2/repository_packaging.html (&quot;Specification&quot;).
-
-You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:
-
-A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based product.
-During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be accessed and copied to the Target Machine.
-Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.
-Cryptography
-
-Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country&apos;s laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.
-
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.
-   </copyright>
-
-   <license url="http://www.eclipse.org/legal/epl-v10.html">
-      Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-&quot;Contribution&quot; means:
-
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
-b) in the case of each subsequent Contributor:
-i) changes to the Program, and
-ii) additions to the Program;
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution &apos;originates&apos; from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor&apos;s behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
-&quot;Contributor&quot; means any person or entity that distributes the Program.
-
-&quot;Licensed Patents&quot; mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
-
-&quot;Program&quot; means the Contributions distributed in accordance with this Agreement.
-
-&quot;Recipient&quot; means anyone who receives the Program under this Agreement, including all Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient&apos;s responsibility to acquire that license before distributing the Program.
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-b) its license agreement:
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-b) a copy of this Agreement must be included with each copy of the Program.
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify every other Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor&apos;s responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient&apos;s patent(s), then such Recipient&apos;s rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient&apos;s rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient&apos;s rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient&apos;s obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
-   </license>
-
-   <url>
-      <update label="Eclipse UOMo Updates" url="http://www.eclipse.org/uomo/update"/>
-   </url>
-
-   <requires>
-      <import plugin="com.ibm.icu" version="4.2.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.uomo.core" version="0.7.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.uomo.core" version="0.7.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.uomo.util" version="0.7.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.uomo.xml" version="0.7.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.uomo.units" version="0.7.0" match="greaterOrEqual"/>
-      
-      <import plugin="org.eclipse.core.runtime" version="3.6.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.osgi" version="3.6.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.osgi.services" version="3.2.100" match="greaterOrEqual"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.uomo.units"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.uomo.util"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.uomo.xml"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.uomo.ucum"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.uomo.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.uomo.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.commons.lang"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.uomo.feature"

+      label="Eclipse UOMo"

+      version="0.7.0.qualifier"

+      provider-name="Eclipse.org"

+      plugin="org.eclipse.uomo.ui">

+

+   <description url="http://www.eclipse.org/uomo">

+      Eclipse UOMo

+   </description>

+

+   <copyright url="http://www.example.com/copyright">

+      Eclipse Foundation Software User Agreement

+

+February 1, 2011

+

+Usage Of Content

+

+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

+

+Applicable Licenses

+

+Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, &quot;Program&quot; will mean the Content.

+

+Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).

+

+Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).

+Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named &quot;plugins&quot;.

+A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;. Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.

+Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.

+The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

+

+The top-level (root) directory

+Plug-in and Fragment directories

+Inside Plug-ins and Fragments packaged as JARs

+Sub-directories of the directory named &quot;src&quot; of certain Plug-ins

+Feature directories

+Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

+

+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

+

+Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)

+Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)

+Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)

+Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)

+Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)

+Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)

+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

+

+Use of Provisioning Technology

+

+The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to install, extend and update Eclipse-based products. Information about packaging Installable Software is available at http://eclipse.org/equinox/p2/repository_packaging.html (&quot;Specification&quot;).

+

+You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:

+

+A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based product.

+During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be accessed and copied to the Target Machine.

+Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.

+Cryptography

+

+Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country&apos;s laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

+

+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.

+   </copyright>

+

+   <license url="http://www.eclipse.org/legal/epl-v10.html">

+      Eclipse Public License - v 1.0

+

+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE OF THIS AGREEMENT.

+

+1. DEFINITIONS

+

+&quot;Contribution&quot; means:

+

+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and

+b) in the case of each subsequent Contributor:

+i) changes to the Program, and

+ii) additions to the Program;

+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution &apos;originates&apos; from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor&apos;s behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

+&quot;Contributor&quot; means any person or entity that distributes the Program.

+

+&quot;Licensed Patents&quot; mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

+

+&quot;Program&quot; means the Contributions distributed in accordance with this Agreement.

+

+&quot;Recipient&quot; means anyone who receives the Program under this Agreement, including all Contributors.

+

+2. GRANT OF RIGHTS

+

+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient&apos;s responsibility to acquire that license before distributing the Program.

+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

+3. REQUIREMENTS

+

+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

+

+a) it complies with the terms and conditions of this Agreement; and

+b) its license agreement:

+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

+When the Program is made available in source code form:

+

+a) it must be made available under this Agreement; and

+b) a copy of this Agreement must be included with each copy of the Program.

+Contributors may not remove or alter any copyright notices contained within the Program.

+

+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

+

+4. COMMERCIAL DISTRIBUTION

+

+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify every other Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

+

+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor&apos;s responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

+

+5. NO WARRANTY

+

+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

+

+6. DISCLAIMER OF LIABILITY

+

+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+

+7. GENERAL

+

+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

+

+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient&apos;s patent(s), then such Recipient&apos;s rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

+

+All Recipient&apos;s rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient&apos;s rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient&apos;s obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

+

+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

+

+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

+   </license>

+

+   <url>

+      <update label="Eclipse UOMo Updates" url="http://www.eclipse.org/uomo/update"/>

+   </url>

+

+   <requires>

+      <import plugin="com.ibm.icu" version="4.2.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.uomo.core" version="0.7.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.uomo.core" version="0.7.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.uomo.util" version="0.7.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.uomo.xml" version="0.7.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.uomo.units" version="0.7.0" match="greaterOrEqual"/>

+      

+      <import plugin="org.eclipse.core.runtime" version="3.6.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.osgi" version="3.6.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.osgi.services" version="3.2.100" match="greaterOrEqual"/>

+   </requires>

+

+   <plugin

+         id="org.eclipse.uomo.units"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.uomo.util"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.uomo.xml"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.uomo.ucum"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.uomo.core"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.uomo.ui"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.apache.commons.lang"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/features/org.eclipse.uomo.feature/pom.xml b/features/org.eclipse.uomo.feature/pom.xml
index 6afa293..a6c2f69 100644
--- a/features/org.eclipse.uomo.feature/pom.xml
+++ b/features/org.eclipse.uomo.feature/pom.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>org.eclipse.uomo.features</artifactId>
-    <groupId>org.eclipse.uomo</groupId>
-    <version>0.7.0-SNAPSHOT</version>
-  </parent>
-  <packaging>eclipse-feature</packaging>
-  <artifactId>org.eclipse.uomo.feature</artifactId>
-  <name>UOMo Feature</name>
-</project>
+<?xml version="1.0"?>

+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <artifactId>org.eclipse.uomo.features</artifactId>

+    <groupId>org.eclipse.uomo</groupId>

+    <version>0.7.0-SNAPSHOT</version>

+  </parent>

+  <packaging>eclipse-feature</packaging>

+  <artifactId>org.eclipse.uomo.feature</artifactId>

+  <name>UOMo Feature</name>

+</project>

diff --git a/features/pom.xml b/features/pom.xml
index d8f9848..ae69d95 100644
--- a/features/pom.xml
+++ b/features/pom.xml
@@ -1,14 +1,14 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>org.eclipse.uomo</artifactId>
-    <groupId>org.eclipse.uomo</groupId>
-    <version>0.7.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>org.eclipse.uomo.features</artifactId>
-  <name>Eclipse UOMo Features</name>
-  <packaging>pom</packaging>
-  <modules>
-  	<module>org.eclipse.uomo.feature</module>
-  </modules>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <artifactId>org.eclipse.uomo</artifactId>

+    <groupId>org.eclipse.uomo</groupId>

+    <version>0.7.0-SNAPSHOT</version>

+  </parent>

+  <artifactId>org.eclipse.uomo.features</artifactId>

+  <name>Eclipse UOMo Features</name>

+  <packaging>pom</packaging>

+  <modules>

+  	<module>org.eclipse.uomo.feature</module>

+  </modules>

 </project>
\ No newline at end of file
diff --git a/maven/Maven Clean Install.launch b/maven/Maven Clean Install.launch
index f2a7d03..af66048 100644
--- a/maven/Maven Clean Install.launch
+++ b/maven/Maven Clean Install.launch
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
-<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
-<stringAttribute key="M2_GOALS" value="clean install"/>
-<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
-<booleanAttribute key="M2_OFFLINE" value="false"/>
-<stringAttribute key="M2_PROFILES" value=""/>
-<listAttribute key="M2_PROPERTIES"/>
-<stringAttribute key="M2_RUNTIME" value="apache-maven-3.0.4"/>
-<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
-<intAttribute key="M2_THREADS" value="1"/>
-<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
-<stringAttribute key="M2_USER_SETTINGS" value=""/>
-<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
-<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dmaven.test.skip=true"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.uomo}"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">

+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>

+<stringAttribute key="M2_GOALS" value="clean install"/>

+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>

+<booleanAttribute key="M2_OFFLINE" value="false"/>

+<stringAttribute key="M2_PROFILES" value=""/>

+<listAttribute key="M2_PROPERTIES"/>

+<stringAttribute key="M2_RUNTIME" value="apache-maven-3.0.4"/>

+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>

+<intAttribute key="M2_THREADS" value="1"/>

+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>

+<stringAttribute key="M2_USER_SETTINGS" value=""/>

+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>

+<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>

+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">

+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>

+</listAttribute>

+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>

+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dmaven.test.skip=true"/>

+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.uomo}"/>

+</launchConfiguration>

diff --git a/maven/Maven Clean Package.launch b/maven/Maven Clean Package.launch
index 69a1f4e..3f2c231 100644
--- a/maven/Maven Clean Package.launch
+++ b/maven/Maven Clean Package.launch
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
-<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
-<stringAttribute key="M2_GOALS" value="clean package"/>
-<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
-<booleanAttribute key="M2_OFFLINE" value="false"/>
-<stringAttribute key="M2_PROFILES" value=""/>
-<listAttribute key="M2_PROPERTIES"/>
-<stringAttribute key="M2_RUNTIME" value="apache-maven-3.0.4"/>
-<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
-<intAttribute key="M2_THREADS" value="1"/>
-<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
-<stringAttribute key="M2_USER_SETTINGS" value=""/>
-<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dmaven.test.skip=true"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.uomo}"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">

+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>

+<stringAttribute key="M2_GOALS" value="clean package"/>

+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>

+<booleanAttribute key="M2_OFFLINE" value="false"/>

+<stringAttribute key="M2_PROFILES" value=""/>

+<listAttribute key="M2_PROPERTIES"/>

+<stringAttribute key="M2_RUNTIME" value="apache-maven-3.0.4"/>

+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>

+<intAttribute key="M2_THREADS" value="1"/>

+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>

+<stringAttribute key="M2_USER_SETTINGS" value=""/>

+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>

+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">

+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>

+</listAttribute>

+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>

+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dmaven.test.skip=true"/>

+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.uomo}"/>

+</launchConfiguration>

diff --git a/maven/Maven Install.launch b/maven/Maven Install.launch
index efeffc8..aa84b3b 100644
--- a/maven/Maven Install.launch
+++ b/maven/Maven Install.launch
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">
-<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>
-<stringAttribute key="M2_GOALS" value="install"/>
-<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>
-<booleanAttribute key="M2_OFFLINE" value="false"/>
-<stringAttribute key="M2_PROFILES" value=""/>
-<listAttribute key="M2_PROPERTIES"/>
-<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>
-<booleanAttribute key="M2_SKIP_TESTS" value="true"/>
-<intAttribute key="M2_THREADS" value="1"/>
-<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>
-<stringAttribute key="M2_USER_SETTINGS" value=""/>
-<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.uomo}"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">

+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>

+<stringAttribute key="M2_GOALS" value="install"/>

+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>

+<booleanAttribute key="M2_OFFLINE" value="false"/>

+<stringAttribute key="M2_PROFILES" value=""/>

+<listAttribute key="M2_PROPERTIES"/>

+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>

+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>

+<intAttribute key="M2_THREADS" value="1"/>

+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>

+<stringAttribute key="M2_USER_SETTINGS" value=""/>

+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>

+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.uomo}"/>

+</launchConfiguration>

diff --git a/pom.xml b/pom.xml
index e3e3057..8f355a5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,209 +1,209 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- ======================================================================= 
-	Maven Project Configuration File Eclipse UOMo http://www.eclipse.org/proposals/uomo/ 
-	======================================================================= -->
-
-<!-- $Id: pom.xml 306 2012-10-29 20:42:27Z werner.keil $ -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<parent>
-		<!-- 
-		<artifactId>eclipse-parent</artifactId>
-		<groupId>org.eclipse</groupId>
-		<version>1.0.0</version>
- -->
-		<groupId>org.sonatype.oss</groupId>
-		<artifactId>oss-parent</artifactId>
-		<version>9</version>
-	</parent>
-	
-	<modelVersion>4.0.0</modelVersion>
-	<properties>
-		<sourceEncoding>UTF-8</sourceEncoding> <!-- in Maven 3. -->
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<project.build.javaVersion>1.6</project.build.javaVersion>
-		<maven.compilerPlugin.version>2.3.2</maven.compilerPlugin.version>
-		<uomo-version>0.7.0-SNAPSHOT</uomo-version>
-		<tycho-version>0.16.0</tycho-version>
-		<icu4j-version>50.1.1</icu4j-version>
-		<maven.compiler.source>1.6</maven.compiler.source>
-		<maven.compiler.target>1.6</maven.compiler.target>
-		<site.basedir>${project.basedir}</site.basedir>
-	</properties>
-
-	<groupId>org.eclipse.uomo</groupId>
-	<artifactId>org.eclipse.uomo</artifactId>
-	<version>0.7.0-SNAPSHOT</version>
-	<packaging>pom</packaging>
-	<name>Eclipse UOMo</name>
-
-	<!-- =========================================================== -->
-	<!-- Developers and Contributors -->
-	<!-- =========================================================== -->
-	<description>UOMo adds Units of Measurement support for IT Systems and Services both to Language and Data.</description>
-	<url>http://www.eclipse.org/uomo/</url>
-	<issueManagement>
-		<system>Bugzilla</system>
-		<url>https://bugs.eclipse.org/bugs/</url>
-	</issueManagement>
-	<inceptionYear>2010</inceptionYear>
-	<developers>
-		<developer>
-			<name>Werner Keil</name>
-			<id>wkeil</id>
-			<organization>Creative Arts &amp; Technologies</organization>
-			<organizationUrl>http://www.catmedia.us</organizationUrl>
-			<email>werner.keil@gmx.net</email>
-			<timezone>0</timezone>
-			<roles>
-				<role>Project Lead</role>
-				<role>Architect</role>
-				<role>Java Developer</role>
-			</roles>
-		</developer>
-		<developer>
-			<name>Chris Senior</name>
-			<id>csenior</id>
-			<email>christopher.senior@gmail.com</email>
-			<organization>Private Individual</organization>
-			<roles>
-				<role>Architect</role>
-				<role>Java Developer</role>
-			</roles>
-		</developer>
-	</developers>
-	<contributors>
-		<contributor>
-			<name>Grahame Grieve</name>
-			<!-- id>grahameg</id -->
-			<email>grahame@healthintersections.com.au</email>
-			<organization>Health Intersections</organization>
-			<organizationUrl>http://www.healthintersections.com.au</organizationUrl>
-			<roles>
-				<role>UCUM Lead emeritus</role>
-				<role>Architect</role>
-				<role>Java Developer (inactive)</role>
-			</roles>
-		</contributor>
-
-	</contributors>
-	<scm>
-		<url>http://git.eclipse.org/c/uomo/org.eclipse.uomo.git/</url>
-	</scm>
-	<organization>
-		<name>Eclipse Foundation</name>
-		<url>http://www.eclipse.org</url>
-	</organization>
-	<modules>
-		<module>bundles</module>
-		<module>features</module>
-		<module>examples</module>
-		<module>releng</module>
-	</modules>
-	<!-- ======================================================= -->
-	<!-- Build Settings -->
-	<!-- ======================================================= -->
-	<build>
-		<plugins>
-		 <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>2.5</version>
-    <executions>
-      <execution>
-        <id>copy-sitedescriptor</id>
-        <!-- fetch site.xml before creating site documentation -->
-        <phase>pre-site</phase>
-        <goals>
-          <goal>copy-resources</goal>
-        </goals>
-        <configuration>
-          <outputDirectory>${basedir}/src/site/</outputDirectory>
-          <resources>          
-            <resource>                  
-              <directory>${site.basedir}/src/site/</directory>
-              <includes>
-                <include>**/site.xml</include>
-              </includes>
-            </resource>
-          </resources>              
-        </configuration>            
-      </execution>
-    </executions>
-   </plugin>        
-			<plugin>
-				<!-- This sets up the target platform in PDE terms The version of Eclipse 
-					that the source will be built against -->
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>target-platform-configuration</artifactId>
-				<version>${tycho-version}</version>
-				<configuration>
-					<resolver>p2</resolver>
-					<target>
-						<artifact>
-							<groupId>org.eclipse.uomo</groupId>
-							<artifactId>org.eclipse.uomo.target</artifactId>
-							<version>0.7.0-SNAPSHOT</version>
-							<classifier>indigo</classifier>
-						</artifact>
-					</target>
-					<ignoreTychoRepositories>true</ignoreTychoRepositories>
-					<environments>
-						<environment>
-							<os>win32</os>
-							<ws>win32</ws>
-							<arch>x86</arch>
-						</environment>
-						<environment>
-							<os>linux</os>
-							<ws>gtk</ws>
-							<arch>x86</arch>
-						</environment>
-					</environments>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-maven-plugin</artifactId>
-				<version>${tycho-version}</version>
-				<extensions>true</extensions>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-jar-plugin</artifactId>
-				<version>2.4</version>
-			</plugin>
-			<!-- <plugin> <groupId>org.sonatype.tycho</groupId> <artifactId>maven-osgi-packaging-plugin</artifactId> 
-				<version>${tycho-version}</version> <configuration> <archive> <addMavenDescriptor>false</addMavenDescriptor> 
-				</archive> </configuration> </plugin> -->
-		</plugins>
-	</build>
-
-
-	<!-- ==================================================== -->
-	<!-- Repositories. This is where Maven looks for dependencies. The Maven 
-		repository is implicit and doesn't need to be specified. -->
-	<!-- ==================================================== -->
-	<!--  repositories>
-		<repository>
-			<id>eclipse-public</id>
-			<name>Public Eclipse.org Nexus</name>
-			<url>http://maven.eclipse.org/nexus/content/groups/public/</url>
-		</repository>
-
-		<repository>
-			<id>eclipse-central</id>
-			<name>Central Eclipse.org Nexus</name>
-			<url>http://maven.eclipse.org/nexus/content/groups/central/</url>
-		</repository> -->
- 	<repositories>
-		<repository>
-			<id>maven-geotoolkit.org</id>
-			<name>GeoToolkit Repository for Maven</name>
-			<url>http://maven.geotoolkit.org/</url>
-		</repository>
-	</repositories>
-	<ciManagement>
-		<system>Hudson</system>
-		<url>https://hudson.eclipse.org/hudson/job/uomo/</url>
-	</ciManagement>
+<?xml version="1.0" encoding="UTF-8"?>

+<!-- ======================================================================= 

+	Maven Project Configuration File Eclipse UOMo http://www.eclipse.org/proposals/uomo/ 

+	======================================================================= -->

+

+<!-- $Id: pom.xml 306 2012-10-29 20:42:27Z werner.keil $ -->

+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+	<parent>

+		<!-- 

+		<artifactId>eclipse-parent</artifactId>

+		<groupId>org.eclipse</groupId>

+		<version>1.0.0</version>

+ -->

+		<groupId>org.sonatype.oss</groupId>

+		<artifactId>oss-parent</artifactId>

+		<version>9</version>

+	</parent>

+	

+	<modelVersion>4.0.0</modelVersion>

+	<properties>

+		<sourceEncoding>UTF-8</sourceEncoding> <!-- in Maven 3. -->

+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+		<project.build.javaVersion>1.6</project.build.javaVersion>

+		<maven.compilerPlugin.version>2.3.2</maven.compilerPlugin.version>

+		<uomo-version>0.7.0-SNAPSHOT</uomo-version>

+		<tycho-version>0.16.0</tycho-version>

+		<icu4j-version>50.1.1</icu4j-version>

+		<maven.compiler.source>1.6</maven.compiler.source>

+		<maven.compiler.target>1.6</maven.compiler.target>

+		<site.basedir>${project.basedir}</site.basedir>

+	</properties>

+

+	<groupId>org.eclipse.uomo</groupId>

+	<artifactId>org.eclipse.uomo</artifactId>

+	<version>0.7.0-SNAPSHOT</version>

+	<packaging>pom</packaging>

+	<name>Eclipse UOMo</name>

+

+	<!-- =========================================================== -->

+	<!-- Developers and Contributors -->

+	<!-- =========================================================== -->

+	<description>UOMo adds Units of Measurement support for IT Systems and Services both to Language and Data.</description>

+	<url>http://www.eclipse.org/uomo/</url>

+	<issueManagement>

+		<system>Bugzilla</system>

+		<url>https://bugs.eclipse.org/bugs/</url>

+	</issueManagement>

+	<inceptionYear>2010</inceptionYear>

+	<developers>

+		<developer>

+			<name>Werner Keil</name>

+			<id>wkeil</id>

+			<organization>Creative Arts &amp; Technologies</organization>

+			<organizationUrl>http://www.catmedia.us</organizationUrl>

+			<email>werner.keil@gmx.net</email>

+			<timezone>0</timezone>

+			<roles>

+				<role>Project Lead</role>

+				<role>Architect</role>

+				<role>Java Developer</role>

+			</roles>

+		</developer>

+		<developer>

+			<name>Chris Senior</name>

+			<id>csenior</id>

+			<email>christopher.senior@gmail.com</email>

+			<organization>Private Individual</organization>

+			<roles>

+				<role>Architect</role>

+				<role>Java Developer</role>

+			</roles>

+		</developer>

+	</developers>

+	<contributors>

+		<contributor>

+			<name>Grahame Grieve</name>

+			<!-- id>grahameg</id -->

+			<email>grahame@healthintersections.com.au</email>

+			<organization>Health Intersections</organization>

+			<organizationUrl>http://www.healthintersections.com.au</organizationUrl>

+			<roles>

+				<role>UCUM Lead emeritus</role>

+				<role>Architect</role>

+				<role>Java Developer (inactive)</role>

+			</roles>

+		</contributor>

+

+	</contributors>

+	<scm>

+		<url>http://git.eclipse.org/c/uomo/org.eclipse.uomo.git/</url>

+	</scm>

+	<organization>

+		<name>Eclipse Foundation</name>

+		<url>http://www.eclipse.org</url>

+	</organization>

+	<modules>

+		<module>bundles</module>

+		<module>features</module>

+		<module>examples</module>

+		<module>releng</module>

+	</modules>

+	<!-- ======================================================= -->

+	<!-- Build Settings -->

+	<!-- ======================================================= -->

+	<build>

+		<plugins>

+		 <plugin>

+    <artifactId>maven-resources-plugin</artifactId>

+    <version>2.5</version>

+    <executions>

+      <execution>

+        <id>copy-sitedescriptor</id>

+        <!-- fetch site.xml before creating site documentation -->

+        <phase>pre-site</phase>

+        <goals>

+          <goal>copy-resources</goal>

+        </goals>

+        <configuration>

+          <outputDirectory>${basedir}/src/site/</outputDirectory>

+          <resources>          

+            <resource>                  

+              <directory>${site.basedir}/src/site/</directory>

+              <includes>

+                <include>**/site.xml</include>

+              </includes>

+            </resource>

+          </resources>              

+        </configuration>            

+      </execution>

+    </executions>

+   </plugin>        

+			<plugin>

+				<!-- This sets up the target platform in PDE terms The version of Eclipse 

+					that the source will be built against -->

+				<groupId>org.eclipse.tycho</groupId>

+				<artifactId>target-platform-configuration</artifactId>

+				<version>${tycho-version}</version>

+				<configuration>

+					<resolver>p2</resolver>

+					<target>

+						<artifact>

+							<groupId>org.eclipse.uomo</groupId>

+							<artifactId>org.eclipse.uomo.target</artifactId>

+							<version>0.7.0-SNAPSHOT</version>

+							<classifier>indigo</classifier>

+						</artifact>

+					</target>

+					<ignoreTychoRepositories>true</ignoreTychoRepositories>

+					<environments>

+						<environment>

+							<os>win32</os>

+							<ws>win32</ws>

+							<arch>x86</arch>

+						</environment>

+						<environment>

+							<os>linux</os>

+							<ws>gtk</ws>

+							<arch>x86</arch>

+						</environment>

+					</environments>

+				</configuration>

+			</plugin>

+			<plugin>

+				<groupId>org.eclipse.tycho</groupId>

+				<artifactId>tycho-maven-plugin</artifactId>

+				<version>${tycho-version}</version>

+				<extensions>true</extensions>

+			</plugin>

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-jar-plugin</artifactId>

+				<version>2.4</version>

+			</plugin>

+			<!-- <plugin> <groupId>org.sonatype.tycho</groupId> <artifactId>maven-osgi-packaging-plugin</artifactId> 

+				<version>${tycho-version}</version> <configuration> <archive> <addMavenDescriptor>false</addMavenDescriptor> 

+				</archive> </configuration> </plugin> -->

+		</plugins>

+	</build>

+

+

+	<!-- ==================================================== -->

+	<!-- Repositories. This is where Maven looks for dependencies. The Maven 

+		repository is implicit and doesn't need to be specified. -->

+	<!-- ==================================================== -->

+	<!--  repositories>

+		<repository>

+			<id>eclipse-public</id>

+			<name>Public Eclipse.org Nexus</name>

+			<url>http://maven.eclipse.org/nexus/content/groups/public/</url>

+		</repository>

+

+		<repository>

+			<id>eclipse-central</id>

+			<name>Central Eclipse.org Nexus</name>

+			<url>http://maven.eclipse.org/nexus/content/groups/central/</url>

+		</repository> -->

+ 	<repositories>

+		<repository>

+			<id>maven-geotoolkit.org</id>

+			<name>GeoToolkit Repository for Maven</name>

+			<url>http://maven.geotoolkit.org/</url>

+		</repository>

+	</repositories>

+	<ciManagement>

+		<system>Hudson</system>

+		<url>https://hudson.eclipse.org/hudson/job/uomo/</url>

+	</ciManagement>

 </project>
\ No newline at end of file
diff --git a/releng/.project b/releng/.project
index 75a9c24..b6668b5 100644
--- a/releng/.project
+++ b/releng/.project
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.uomo.releng</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.uomo.releng</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/releng/.settings/org.eclipse.m2e.core.prefs b/releng/.settings/org.eclipse.m2e.core.prefs
index f897a7f..14b697b 100644
--- a/releng/.settings/org.eclipse.m2e.core.prefs
+++ b/releng/.settings/org.eclipse.m2e.core.prefs
@@ -1,4 +1,4 @@
-activeProfiles=
-eclipse.preferences.version=1
-resolveWorkspaceProjects=true
-version=1
+activeProfiles=

+eclipse.preferences.version=1

+resolveWorkspaceProjects=true

+version=1

diff --git a/releng/eclipse-repository/.project b/releng/eclipse-repository/.project
index 15d302d..e82335e 100644
--- a/releng/eclipse-repository/.project
+++ b/releng/eclipse-repository/.project
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>eclipse-repository</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>eclipse-repository</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+</projectDescription>

diff --git a/releng/eclipse-repository/category.xml b/releng/eclipse-repository/category.xml
index c508010..4720bfd 100644
--- a/releng/eclipse-repository/category.xml
+++ b/releng/eclipse-repository/category.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-   <feature url="features/org.eclipse.uomo.feature_0.7.0.qualifier.jar" id="org.eclipse.uomo.feature" version="0.7.0.qualifier">
-   	  <category name="uomo-category"/>
-   </feature>
-   <category-def name="uomo-category" label="Units of Measurement (UOMo)">
-      <description>
-         UOMo adds Units of Measurement support for IT Systems and Services both to Language and Data.
-      </description>
-   </category-def>
-</site>
+<?xml version="1.0" encoding="UTF-8"?>

+<site>

+   <feature url="features/org.eclipse.uomo.feature_0.7.0.qualifier.jar" id="org.eclipse.uomo.feature" version="0.7.0.qualifier">

+   	  <category name="uomo-category"/>

+   </feature>

+   <category-def name="uomo-category" label="Units of Measurement (UOMo)">

+      <description>

+         UOMo adds Units of Measurement support for IT Systems and Services both to Language and Data.

+      </description>

+   </category-def>

+</site>

diff --git a/releng/eclipse-repository/pom.xml b/releng/eclipse-repository/pom.xml
index 1a92214..c2a5c5c 100644
--- a/releng/eclipse-repository/pom.xml
+++ b/releng/eclipse-repository/pom.xml
@@ -1,12 +1,12 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>org.eclipse.uomo.releng</artifactId>
-    <groupId>org.eclipse.uomo</groupId>
-    <version>0.7.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>eclipse-repository</artifactId>
-  <name>Eclipse UOMo Repository</name>
-  <packaging>eclipse-repository</packaging>
-  
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+  <modelVersion>4.0.0</modelVersion>

+  <parent>

+    <artifactId>org.eclipse.uomo.releng</artifactId>

+    <groupId>org.eclipse.uomo</groupId>

+    <version>0.7.0-SNAPSHOT</version>

+  </parent>

+  <artifactId>eclipse-repository</artifactId>

+  <name>Eclipse UOMo Repository</name>

+  <packaging>eclipse-repository</packaging>

+  

 </project>
\ No newline at end of file
diff --git a/releng/org.eclipse.uomo.target/.gitignore b/releng/org.eclipse.uomo.target/.gitignore
index 40a85ff..15a95ee 100644
--- a/releng/org.eclipse.uomo.target/.gitignore
+++ b/releng/org.eclipse.uomo.target/.gitignore
@@ -1 +1 @@
-/.settings
+/.settings