private ArrayList<ArrayList<Point>>  fixInputStrokes(ArrayList<ArrayList<Point>> inputStrokes) {
		ArrayList<ArrayList<Point>> resultInputStrokes = new ArrayList<ArrayList<Point>>();	// 補正後の手書き文字
		int inputStrokesLen = inputStrokes.size();
		for (int i = 0; i < inputStrokesLen; ++i) {
			ArrayList<Point> inputStroke = inputStrokes.get(i);	// (i+1)画目
			int inputStrokeLen = inputStroke.size() - 1;
			ArrayList<Point> resultInputStroke = new ArrayList<Point>();	// 補正後の手書き文字の1画
			if (inputStrokeLen > 0) {
				Point p = inputStroke.get(0);	// 頂点0
				Point q = inputStroke.get(1);	// 頂点1
				// とりあえず頂点1は積んじゃう
				resultInputStroke.add(new Point(p));
				// ベクトル頂点0→1の角度
				double lastAngle = Math.atan2((q.getY() - p.getY()), (q.getX() - p.getX()));
				// 角度の差の累積
				//FIXME: change me
				double total = 0;
				for (int j = 1; ; ++j) {
					//FIXME: change me
					if (SHOW_DEBUG) {
						//System.out.println("=============>" + j + ", " + inputStrokeLen);
					}
					//if (j < inputStrokeLen) {
					p = inputStroke.get(j);	// 頂点j
					if (j + 1 < inputStroke.size()) {
						q = inputStroke.get(j + 1);	// 頂点(j+1)
					} else {
						q = null;
					}
					//}
					if (j < inputStrokeLen) {
						// ベクトル頂点j→(j+1)の角度
						double angle = Math.atan2((q.getY() - p.getY()), (q.getX() - p.getX()));
						// 前回の角度との差を加算
						total += Math.abs(lastAngle - angle);
						// 保存
						lastAngle = angle;
						// 角度の差が一定値を越えたら新しい頂点を追加
						if (total >= 0.8) {
							// 但しあんまりにも線の長さが無い時はスルー（マウス等によるブレの補正）
							{
								int resultInputStrokeLen = resultInputStroke.size();
								Point rp = resultInputStroke.get(resultInputStrokeLen - 1);
								double xd = rp.getX() - p.getX();
								double yd = rp.getY() - p.getY();
								// 最後に追加した補正後の点から今追加しようとしている点までの距離（の2乗）と比較
								if ((xd * xd + yd * yd) <= 30 * 30) {
									continue;
								}
							}
							total = 0;
							// 点を追加
							resultInputStroke.add(new Point(p));
						}
					} else {
						// もう最後の点（j==inputStroke）なので問答無用で追加
						resultInputStroke.add(new Point(p));
						break;
					}
				}		
				// 1画完成したので追加
				resultInputStrokes.add(resultInputStroke);
			}
		}
		return resultInputStrokes;
	}