@Override
	public boolean equals(Object o) {
		if (! (o instanceof PoliLine)) {
			return false;
		}
		Iterator<Point> other = ((PoliLine) o).iterator();
		
		boolean started = false;
		Iterator<Point> me = this.iterator();
		
		if (! me.hasNext()) {
			return (! other.hasNext());
		}
		
		Point otherFirst = other.next();
		while (other.hasNext()) {
			
			if (! me.hasNext()) {
				if (started) {
					me = iterator();
				} else {
					return false;
				}
			}
			
			Point mine = me.next();
			if (started) {
				if (!other.hasNext() || ! mine.equals(other.next())) {
					return false;
				}
			} else {
				if (mine.equals(otherFirst)) {
					started = true;
				}
			}
		}
		
		return started;
	}