public boolean equals(Object obj) {
		if (!(obj instanceof FreeHandObject) || !super.equals(obj))
			return false;

		FreeHandObject that = (FreeHandObject) obj;

		PathIterator i1 = this.path.getPathIterator(null);
		PathIterator i2 = that.getPath().getPathIterator(null);
		float[] c1 = new float[6];
		float[] c2 = new float[6];
		
		while (!i1.isDone() && !i2.isDone()) {
			if (i1.currentSegment(c1) == i2.currentSegment(c2)) {
				if (!Arrays.equals(c1, c2))
					return false;
			} else {
				return false;
			}
			i1.next();
			i2.next();
		}
		return i1.isDone() && i2.isDone();
	}