docs: public MapComposedElement invert() {
  		if (this.pointCoordinates == null) {
  			throw new IndexOutOfBoundsException();
  		}
  		double[] tmp = new double[this.pointCoordinates.length];
  		for (int i = 0; i < this.pointCoordinates.length; i += 2) {
  			tmp[i] = this.pointCoordinates[this.pointCoordinates.length - 1 - (i + 1)];
  			tmp[i + 1] = this.pointCoordinates[this.pointCoordinates.length - 1 - i];
  		}
  		System.arraycopy(tmp, 0, this.pointCoordinates, 0, this.pointCoordinates.length);
  
  		if (this.partIndexes != null) {
  			int[] tmpint = new int[this.partIndexes.length];
  			//part 0 not inside the index array
  			for (int i = 0; i < this.partIndexes.length; ++i) {
  				tmpint[this.partIndexes.length - 1 - i] = this.pointCoordinates.length - this.partIndexes[i];
  			}
  			System.arraycopy(tmpint, 0, this.partIndexes, 0, this.partIndexes.length);
  			tmpint = null;
  		}
  		tmp = null;
  		return this;
  	}