@Override
	public String getName()
	{
		StringBuilder builder = new StringBuilder();
		
		builder.append(super.getName());
		
		if (this._parameterTypes != null && this._parameterTypes.size() > 0)
		{
			Type type = this._parameterTypes.get(0);
			
			builder.append("(").append(type.getName());
			
			for (int i = 1; i < this._parameterTypes.size(); i++)
			{
				builder.append(",").append(this._parameterTypes.get(i).getName());
			}
			
			builder.append(")");
		}
		
		if (this._returnTypes != null && this._returnTypes.size() > 0)
		{
			Type returnType = this._returnTypes.get(0);
			
			builder.append("->");
			
			if (this._returnTypes.size() == 1)
			{
				builder.append(returnType.getName());
			}
			else
			{
				builder.append("(").append(returnType.getName());
				
				for (int i = 1; i < this._returnTypes.size(); i++)
				{
					builder.append("|").append(this._returnTypes.get(i).getName());
				}
				
				builder.append(")");
			}
		}
		
		return builder.toString();
	}