import function BuildWidgetPath( names : array< CName > ) : inkWidgetPath;

import struct inkWidgetPath
{
	public import static function IsValid( self : inkWidgetPath ) : Bool;

	public static function Build( n0 : CName ) : inkWidgetPath
	{
		var names : array< CName >;
		names.PushBack( n0 );
		return BuildWidgetPath( names );
	}

	public static function Build( n0 : CName, n1 : CName ) : inkWidgetPath
	{
		var names : array< CName >;
		names.PushBack( n0 );
		names.PushBack( n1 );
		return BuildWidgetPath( names );
	}

	public static function Build( n0 : CName, n1 : CName, n2 : CName ) : inkWidgetPath
	{
		var names : array< CName >;
		names.PushBack( n0 );
		names.PushBack( n1 );
		names.PushBack( n2 );
		return BuildWidgetPath( names );
	}

	public static function Build( n0 : CName, n1 : CName, n2 : CName, n3 : CName ) : inkWidgetPath
	{
		var names : array< CName >;
		names.PushBack( n0 );
		names.PushBack( n1 );
		names.PushBack( n2 );
		names.PushBack( n3 );
		return BuildWidgetPath( names );
	}

	public static function Build( n0 : CName, n1 : CName, n2 : CName, n3 : CName, n4 : CName ) : inkWidgetPath
	{
		var names : array< CName >;
		names.PushBack( n0 );
		names.PushBack( n1 );
		names.PushBack( n2 );
		names.PushBack( n3 );
		names.PushBack( n4 );
		return BuildWidgetPath( names );
	}

	public static function Build( n0 : CName, n1 : CName, n2 : CName, n3 : CName, n4 : CName, n5 : CName ) : inkWidgetPath
	{
		var names : array< CName >;
		names.PushBack( n0 );
		names.PushBack( n1 );
		names.PushBack( n2 );
		names.PushBack( n3 );
		names.PushBack( n4 );
		names.PushBack( n5 );
		return BuildWidgetPath( names );
	}

	public static function Build( n0 : CName, n1 : CName, n2 : CName, n3 : CName, n4 : CName, n5 : CName, n6 : CName ) : inkWidgetPath
	{
		var names : array< CName >;
		names.PushBack( n0 );
		names.PushBack( n1 );
		names.PushBack( n2 );
		names.PushBack( n3 );
		names.PushBack( n4 );
		names.PushBack( n5 );
		names.PushBack( n6 );
		return BuildWidgetPath( names );
	}

	public static function Build( n0 : CName, n1 : CName, n2 : CName, n3 : CName, n4 : CName, n5 : CName, n6 : CName, n7 : CName ) : inkWidgetPath
	{
		var names : array< CName >;
		names.PushBack( n0 );
		names.PushBack( n1 );
		names.PushBack( n2 );
		names.PushBack( n3 );
		names.PushBack( n4 );
		names.PushBack( n5 );
		names.PushBack( n6 );
		names.PushBack( n7 );
		return BuildWidgetPath( names );
	}

}

