protected virtual EXPR_ITEM CloneExprItem(openehr.openehr.am.archetype.assertion.EXPR_LEAF o)
        {
            EXPR_LEAF result = new EXPR_LEAF();

            result.type = o.type().ToString();

            if (result.type.StartsWith("OE_"))
                result.type = result.type.Substring(3);

            if (o.reference_type() != null)
                result.reference_type = o.reference_type().ToString();

            switch (result.type)
            {
                case "C_STRING":
                    result.item = CloneString(o.item() as openehr.openehr.am.archetype.constraint_model.primitive.Impl.C_STRING);
                    break;

                case "String":
                    result.item = o.item().ToString();
                    break;

                default:
                    throw new NotSupportedException(result.type);
            }

            return result;
        }