private Collection<? extends Node> getDropNodes(BlockType type, int x, int lowestY, DropDirection dd) {
		ArrayList<Node> result = new ArrayList<Node>();
		switch(dd){
		case UP:
			if(type==BlockType.Corner){
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY)));
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY+1)));
				result.add(Node.getNode(Coordinate.getCoordinate(x+1, lowestY+1)));
			} else if(type==BlockType.Line){
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY)));
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY+1)));
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY+2)));
			} else if(type==BlockType.Square){
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY)));
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY+1)));
				result.add(Node.getNode(Coordinate.getCoordinate(x+1, lowestY)));
				result.add(Node.getNode(Coordinate.getCoordinate(x+1, lowestY+1)));
			}
			break;
		case DOWN:
			if(type==BlockType.Corner){
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY)));
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY-1)));
				result.add(Node.getNode(Coordinate.getCoordinate(x+1, lowestY)));
			} else if(type==BlockType.Line){
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY)));
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY-1)));
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY-2)));
			} else if(type==BlockType.Square){
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY)));
				result.add(Node.getNode(Coordinate.getCoordinate(x, lowestY-1)));
				result.add(Node.getNode(Coordinate.getCoordinate(x+1, lowestY)));
				result.add(Node.getNode(Coordinate.getCoordinate(x+1, lowestY-1)));
			}
			break;
		}

		return result;
	}