@SuppressWarnings("unchecked") public static <P extends Position> CompoundCoordinateReferenceSystem<?> combine (CoordinateReferenceSystem<P> base, SingleCoordinateReferenceSystem ods) { if (base instanceof CompoundCoordinateReferenceSystem) { List<SingleCoordinateReferenceSystem<?>> components = ((CompoundCoordinateReferenceSystem<P>) base) .getComponents(); List<SingleCoordinateReferenceSystem<?>> nc = new ArrayList<SingleCoordinateReferenceSystem<?>>(components); nc.add(ods); return new CompoundCoordinateReferenceSystem(base.getName() + "+" + ods.getName(), nc.toArray( new SingleCoordinateReferenceSystem[0])); } else if (base instanceof SingleCoordinateReferenceSystem) { SingleCoordinateReferenceSystem<P> single = (SingleCoordinateReferenceSystem<P>) base; return new CompoundCoordinateReferenceSystem(single.getName() + "+" + ods.getName(), single, ods); } throw new UnsupportedOperationException("Unsupported type of coordinate reference system"); }