public void getSignature(SourceWriter writer)
	{
		// process scope
		if ("static".equals(this._scope))
		{
			writer.printWithIndent(this._scope).print(" ");
		}
		else
		{
			writer.printIndent();
		}
		
		// process visibility
		if (this._visibility != null && this._visibility.length() > 0)
		{
			writer.print(this._visibility).print(" ");
		}
		
		// process access
		if ("read-write".equals(this._access) == false)
		{
			writer.print(this._access).print(" ");
		}
		
		writer.print("property ").print(this._name).print("->");
		
		if (this._types != null && this._types.size() > 0)
		{
			// copy type list and sort
			List<Type> types = new ArrayList<Type>(this._types);
			
			SignatureUtils.sort(types);
			
			Type type = types.get(0);
			
			writer.print(type.getName());
			
			for (int i = 1; i < types.size(); i++)
			{
				type = types.get(i);
				
				writer.print(" | ").print(type.getName());
			}
		}
	}