(2);
			else if (ns != null && ns.Length > 0)
				res = ns + "." + id;
			else
				res = id;
			
			if (version != null && version.Length > 0)
				return res + "," + version;
			else
				return res;
		}

		/// <summary>
		/// Given a full add-in identifier, returns the namespace and name of the add-in (it removes the version number)
		/// </summary>
		/// <param name='addinId'>
		/// Add-in identifier.
		/// </param>
		public static string GetIdName (string addinId)
		{
			int i = addinId.IndexOf (',');
			if (i != -1)
				return addinId.Substring (0, i);
			else
				return addinId;
		}
		
		/// <summary>
		/// Given a full add-in identifier, returns the version the add-in
		/// </summary>
		/// <returns>
		/// The version.
		/// </returns>
		public static string GetIdVersion (string addinId)
		{
			int i = addinId.IndexOf (',');
			if (i != -1)
				return addinId.Substring (i + 1).Trim ();
			else
				return string.Empty;
		}
		
		/// <summary>
		/// Splits a full add-in identifier in name and version
		/// </summary>
		/// <param name='addinId'>
		/// Add-in identifier.
		/// </param>
		/// <param name='name'>
		/// The resulting name
		/// </param>
		/// <param name='version'>
		/// The resulting version
		/// </param>
		public static void GetIdParts (string addinId, out string name, out string version)
		{
			int i = addinId.IndexOf (',');
			if (i != -1) {
				name = addinId.Substring (0, i);
				version = addinId.Substring (i+1).Trim ();
			} else {
				name = addinId;
				version = string.Empty;
			}
		}
	}
}


#import "EXPMatchers+beNil.h"
#import "EXPMatchers+equal.h"
#import "EXPMatchers+beInstanceOf.h"
#import "EXPMatchers+beKindOf.h"
#import "EXPMatchers+beSubclassOf.h"
#import "EXPMatchers+conformTo.h"
#import "EXPMatchers+beTruthy.h"
#import "EXPMatchers+beFalsy.h"
#import "EXPMatchers+contain.h"
#import "EXPMatchers+beSupersetOf.h"
#import "EXPMatchers+haveCountOf.h"
#import "EXPMatchers+beIdenticalTo.h"
#import "EXPMatchers+beGreaterThan.h"
#import "EXPMatchers+beGreaterThanOrEqualTo.h"
#import "E