// Path: app/models/DomainModel.java
// @MappedSuperclass
// public abstract class DomainModel extends GenericModel {
// 
// 	@Id
// 	public long pk;
// 
// }
// 
// Path: app/util/Clipboard.java
// public static class Item {
// 
// 	private static final String DELIMITER = ":";
// 	private static final List types = Arrays.asList(Study.class, Series.class);
// 
// 	public Class type;
// 	public long pk;
// 
// 	public Item(String item) {
// 		String[] parts = item.split(DELIMITER);
// 		type = (Class) types.get(Integer.parseInt(parts[0]));
// 		pk = Long.parseLong(parts[1]);
// 	}
// 
// 	private Item(Class type, long pk) {
// 		this.type = type;
// 		this.pk = pk;
// 	}
// 
// 	public Item(String type, long pk) throws ClassNotFoundException {
// 		this(Class.forName(String.format("models.%s", type)), pk);
// 	}
// 
// 	public Item(DomainModel object) {
// 		this(object.getClass(), object.pk);
// 	}
// 
// 	public static Item[] serialize(List<DomainModel> objects) {
// 		Item[] items = new Item[objects.size()];
// 		for (int i = 0; i < objects.size(); i++) {
// 			DomainModel object = objects.get(i);
// 			items[i] = new Item(object);
// 		}
// 		return items;
// 	}
// 
// 	public DomainModel getModel() throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
// 		return (DomainModel) type.getMethod("findById", Object.class).invoke(null, pk);
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return HashCodeBuilder.reflectionHashCode(this);
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		return EqualsBuilder.reflectionEquals(this, obj);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return String.format("%s%s%s", types.indexOf(type), DELIMITER, pk);
// 	}
// }


import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.List;
import models.DomainModel;
import play.data.binding.TypeBinder;
import util.Clipboard.Item;
package util;



public class DomainModelBinder implements TypeBinder<List> {

	@Override
	public DomainModel bind(String name, Annotation[] annotations, String value, Class actualClass, Type genericType) throws Exception {
// Path: app/models/DomainModel.java
// @MappedSuperclass
// public abstract class DomainModel extends GenericModel {
// 
// 	@Id
// 	public long pk;
// 
// }
// 
// Path: app/util/Clipboard.java
// public static class Item {
// 
// 	private static final String DELIMITER = ":";
// 	private static final List types = Arrays.asList(Study.class, Series.class);
// 
// 	public Class type;
// 	public long pk;
// 
// 	public Item(String item) {
// 		String[] parts = item.split(DELIMITER);
// 		type = (Class) types.get(Integer.parseInt(parts[0]));
// 		pk = Long.parseLong(parts[1]);
// 	}
// 
// 	private Item(Class type, long pk) {
// 		this.type = type;
// 		this.pk = pk;
// 	}
// 
// 	public Item(String type, long pk) throws ClassNotFoundException {
// 		this(Class.forName(String.format("models.%s", type)), pk);
// 	}
// 
// 	public Item(DomainModel object) {
// 		this(object.getClass(), object.pk);
// 	}
// 
// 	public static Item[] serialize(List<DomainModel> objects) {
// 		Item[] items = new Item[objects.size()];
// 		for (int i = 0; i < objects.size(); i++) {
// 			DomainModel object = objects.get(i);
// 			items[i] = new Item(object);
// 		}
// 		return items;
// 	}
// 
// 	public DomainModel getModel() throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
// 		return (DomainModel) type.getMethod("findById", Object.class).invoke(null, pk);
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return HashCodeBuilder.reflectionHashCode(this);
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		return EqualsBuilder.reflectionEquals(this, obj);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return String.format("%s%s%s", types.indexOf(type), DELIMITER, pk);
// 	}
// }


// Path: app/util/DomainModelBinder.java
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.List;
import models.DomainModel;
import play.data.binding.TypeBinder;
import util.Clipboard.Item;

package util;



public class DomainModelBinder implements TypeBinder<List> {

	@Override
	public DomainModel bind(String name, Annotation[] annotations, String value, Class actualClass, Type genericType) throws Exception {
		Item item = new Item(value);