private ShapeModel checkShape(ShapeModel model, Integer posX, Integer posY, Integer checkX, Integer checkY, String rotation) {
    	Position actualPosition;
    	Boolean found = true;
    	ShapeModel shape = new ShapeModel(model.length, model.height, model.score, new HashSet<Position>());
		for (Position p : model.tokens) {
			switch (rotation) {
			case "original":
				actualPosition = new Position(posX - checkX + p.x , posY - checkY + p.y);
				break;
			case "down":
				actualPosition = new Position(posX + checkX - p.x , posY + checkY - p.y);
				break;
			case "left":
				actualPosition = new Position(posX - checkY + p.y , posY + checkX - p.x);
				break;
			case "right":
				actualPosition = new Position(posX + checkY - p.y, posY - checkX + p.x);
				break;
			default:
				actualPosition = new Position(posX, posY);	
			}
			shape.tokens.add(actualPosition);
			if (!whiteTokens.tokensPositions().contains(actualPosition) && !blackTokens.tokensPositions().contains(actualPosition))
				found = false;
		}
		if (found && shape.tokens.contains(new Position(posX, posY)))
			return shape;
		else
			return null;
    }