Program: 91838
Project: 91838
Buggy source:
/** 
 * Creates a transform for the same mathematic than the given   {@code step}but expecting only the given dimensions as inputs. This method is invoked by   {@link #separate()} when user-specified source dimensions need to be taken in account.The given  {@code step} and {@code dimensions} are typically the values of{@link #transform} and {@link #sourceDimensions} fields respectively, but not necessarily.In particular those arguments will differ when this method is invoked recursively for processing concatenated or  {@linkplain PassThroughTransform#getSubTransform() sub-transforms}. <p>Subclasses can override this method if they need to handle some   {@code MathTransform} implementationsin a special way. However all implementations of this method shall obey to the following contract:</p> <ul class="verbose"> <li> {@link #sourceDimensions} and {@link #targetDimensions} should not be assumed accuratesince they may be temporarily outdated or modified during recursive calls to this method.</li> <li> {@link #sourceDimensions} should not be modified by this method.</li><li> {@link #targetDimensions} <strong>must</strong> be <em>overwritten</em> (not updated) by this method to thesequence of all target dimensions of  {@code step} that are also target dimensions of the returned transform.The indices shall be in strictly increasing order from 0 inclusive to {@code step.getTargetDimensions()} exclusive.</li></ul>
 * @param step The transform for which to retain only a subset of the source dimensions.
 * @param dimensions Indices of the source dimensions of {@code step} to retain.
 * @return A transform expecting only the given source dimensions.
 * @throws FactoryException if the given transform is not separable.
 */
@SuppressWarnings("String_Node_Str") protected MathTransform filterSourceDimensions(final MathTransform step,final int[] dimensions) throws FactoryException {
}

Fixed version (ground truth):
/** 
 * Creates a transform for the same mathematic than the given   {@code step}but expecting only the given dimensions as inputs. This method is invoked by   {@link #separate()} when user-specified source dimensions need to be taken in account.The given  {@code step} and {@code dimensions} are typically the values of{@link #transform} and {@link #sourceDimensions} fields respectively, but not necessarily.In particular those arguments will differ when this method is invoked recursively for processing concatenated or  {@linkplain PassThroughTransform#getSubTransform() sub-transforms}. <p>Subclasses can override this method if they need to handle some   {@code MathTransform} implementationsin a special way. However all implementations of this method shall obey to the following contract:</p> <ul class="verbose"> <li> {@link #sourceDimensions} and {@link #targetDimensions} should not be assumed accuratesince they may be temporarily outdated or modified during recursive calls to this method.</li> <li> {@link #sourceDimensions} should not be modified by this method.</li><li> {@link #targetDimensions} <strong>must</strong> be <em>overwritten</em> (not updated) by this method to thesequence of all target dimensions of  {@code step} that are also target dimensions of the returned transform.The indices shall be in strictly increasing order from 0 inclusive to {@code step.getTargetDimensions()} exclusive.</li></ul>
 * @param step  the transform for which to retain only a subset of the source dimensions.
 * @param dimensions  indices of the source dimensions of {@code step} to retain.
 * @return a transform expecting only the given source dimensions.
 * @throws FactoryException if the given transform is not separable.
 */
@SuppressWarnings("String_Node_Str") protected MathTransform filterSourceDimensions(final MathTransform step,final int[] dimensions) throws FactoryException {
}