// Path: src/main/java/de/danielbechler/util/Strings.java
// public class Strings
// {
// 	private static final Pattern LINE_BREAK_PATTERN = Pattern.compile("\\s*\\n\\s*");
// 
// 	private Strings()
// 	{
// 	}
// 
// 	@SuppressWarnings("SizeReplaceableByIsEmpty") // String.isEmpty() is a Java 1.6 feature
// 	public static boolean hasText(final String s)
// 	{
// 		return s != null && s.trim().length() != 0;
// 	}
// 
// 	public static boolean isEmpty(final String s)
// 	{
// 		return !hasText(s);
// 	}
// 
// 	/**
// 	 * Joins all non-null elements of the given <code>elements</code> into one String.
// 	 *
// 	 * @param delimiter Inserted as separator between consecutive elements.
// 	 * @param elements  The elements to join.
// 	 *
// 	 * @return A long string containing all non-null elements.
// 	 */
// 	public static String join(final String delimiter, final Object... elements)
// 	{
// 		final StringBuilder sb = new StringBuilder();
// 		for (final Object part : elements)
// 		{
// 			if (part == null)
// 			{
// 				continue;
// 			}
// 			if (sb.length() > 0)
// 			{
// 				sb.append(delimiter);
// 			}
// 			sb.append(part.toString());
// 		}
// 		return sb.toString();
// 	}
// 
// 	/**
// 	 * Same as {@link #join(String, Object...)} but with a {@link Collection} instead of an Array for the
// 	 * elements.
// 	 *
// 	 * @see #join(String, java.util.Collection)
// 	 */
// 	public static String join(final String delimiter, final Collection<?> elements)
// 	{
// 		if (elements == null || elements.isEmpty())
// 		{
// 			return "";
// 		}
// 		return join(delimiter, elements.toArray(new Object[elements.size()]));
// 	}
// 
// 	public static String toSingleLineString(final Object object)
// 	{
// 		if (object != null)
// 		{
// 			final String s = object.toString().trim();
// 			final Matcher matcher = LINE_BREAK_PATTERN.matcher(s);
// 			return matcher.replaceAll(" \\\\ ");
// 		}
// 		return null;
// 	}
// 
// 	public static String indent(final int times, final String text)
// 	{
// 		final StringBuilder sb = new StringBuilder();
// 		for (int i = 0; i < times; i++)
// 		{
// 			sb.append("  ");
// 		}
// 		sb.append(text);
// 		return sb.toString();
// 	}
// }


import de.danielbechler.util.Strings;
	public String toHumanReadableString()
	{
		return "{" + Strings.toSingleLineString(key) + "}";
	}

	@Override
	public boolean equals(final Object o)
	{
		if (this == o)
		{
			return true;
		}
		if (o == null || getClass() != o.getClass())
		{
			return false;
		}

		final MapKeyElementSelector that = (MapKeyElementSelector) o;

		if (key != null ? !key.equals(that.key) : that.key != null)
		{
			return false;
		}

		return true;
	}

	@Override
	public int hashCode()
	{
// Path: src/main/java/de/danielbechler/util/Strings.java
// public class Strings
// {
// 	private static final Pattern LINE_BREAK_PATTERN = Pattern.compile("\\s*\\n\\s*");
// 
// 	private Strings()
// 	{
// 	}
// 
// 	@SuppressWarnings("SizeReplaceableByIsEmpty") // String.isEmpty() is a Java 1.6 feature
// 	public static boolean hasText(final String s)
// 	{
// 		return s != null && s.trim().length() != 0;
// 	}
// 
// 	public static boolean isEmpty(final String s)
// 	{
// 		return !hasText(s);
// 	}
// 
// 	/**
// 	 * Joins all non-null elements of the given <code>elements</code> into one String.
// 	 *
// 	 * @param delimiter Inserted as separator between consecutive elements.
// 	 * @param elements  The elements to join.
// 	 *
// 	 * @return A long string containing all non-null elements.
// 	 */
// 	public static String join(final String delimiter, final Object... elements)
// 	{
// 		final StringBuilder sb = new StringBuilder();
// 		for (final Object part : elements)
// 		{
// 			if (part == null)
// 			{
// 				continue;
// 			}
// 			if (sb.length() > 0)
// 			{
// 				sb.append(delimiter);
// 			}
// 			sb.append(part.toString());
// 		}
// 		return sb.toString();
// 	}
// 
// 	/**
// 	 * Same as {@link #join(String, Object...)} but with a {@link Collection} instead of an Array for the
// 	 * elements.
// 	 *
// 	 * @see #join(String, java.util.Collection)
// 	 */
// 	public static String join(final String delimiter, final Collection<?> elements)
// 	{
// 		if (elements == null || elements.isEmpty())
// 		{
// 			return "";
// 		}
// 		return join(delimiter, elements.toArray(new Object[elements.size()]));
// 	}
// 
// 	public static String toSingleLineString(final Object object)
// 	{
// 		if (object != null)
// 		{
// 			final String s = object.toString().trim();
// 			final Matcher matcher = LINE_BREAK_PATTERN.matcher(s);
// 			return matcher.replaceAll(" \\\\ ");
// 		}
// 		return null;
// 	}
// 
// 	public static String indent(final int times, final String text)
// 	{
// 		final StringBuilder sb = new StringBuilder();
// 		for (int i = 0; i < times; i++)
// 		{
// 			sb.append("  ");
// 		}
// 		sb.append(text);
// 		return sb.toString();
// 	}
// }


// Path: src/main/java/de/danielbechler/diff/selector/MapKeyElementSelector.java
import de.danielbechler.util.Strings;

	public String toHumanReadableString()
	{
		return "{" + Strings.toSingleLineString(key) + "}";
	}

	@Override
	public boolean equals(final Object o)
	{
		if (this == o)
		{
			return true;
		}
		if (o == null || getClass() != o.getClass())
		{
			return false;
		}

		final MapKeyElementSelector that = (MapKeyElementSelector) o;

		if (key != null ? !key.equals(that.key) : that.key != null)
		{
			return false;
		}

		return true;
	}

	@Override
	public int hashCode()
	{
		return key != null ? key.hashCode() : 0;