code: public static UnconstrainedLeastSquaresSchur<DMatrixRMaj> doglegSchur(boolean robust, @Nullable ConfigTrustRegion config ) {
  		if( config == null )
  			config = new ConfigTrustRegion();
  
  		HessianSchurComplement_DDRM hessian;
  
  		if( robust ) {
  			LinearSolverDense<DMatrixRMaj> solverA = LinearSolverFactory_DDRM.pseudoInverse(true);
  			LinearSolverDense<DMatrixRMaj> solverD = LinearSolverFactory_DDRM.pseudoInverse(true);
  			hessian = new HessianSchurComplement_DDRM(solverA,solverD);
  		} else {
  			// defaults to cholesky
  			hessian = new HessianSchurComplement_DDRM();
  		}
  		TrustRegionUpdateDogleg_F64<DMatrixRMaj> update = new TrustRegionUpdateDogleg_F64<>();
  		UnconLeastSqTrustRegionSchur_F64<DMatrixRMaj> alg = new UnconLeastSqTrustRegionSchur_F64<>(update,hessian);
  		alg.configure(config);
  		return alg;
  	}
docs: Creates a sparse Schur Complement trust region optimization using dogleg steps.
  
  @see UnconLeastSqTrustRegionSchur_F64
  
  @param config Trust region configuration
  @return The new optimization routine