Program: 91981
Project: 91981
Buggy source:
/** 
 * Returns an unmodifiable implementation of the given parameter value. This method shall be used only with: <ul> <li>immutable   {@linkplain #getDescriptor() descriptor},</li> <li>immutable or null   {@linkplain #getUnit() unit}, and</li> <li>immutable or   {@linkplain Cloneable cloneable} parameter {@linkplain #getValue() value}.</li> </ul> If the parameter value implements the   {@link Cloneable} interface and has a public {@code clone()} method,then that value will be cloned every time the  {@link #getValue()} method is invoked.The value is not cloned by this method however; it is caller's responsibility to not modify the value of the given  {@code parameter} instance after this method call.<div class="section">Instances sharing</div> If this method is invoked more than once with equal  {@linkplain #getDescriptor() descriptor},  {@linkplain #getValue() value} and {@linkplain #getUnit() unit}, then this method will return the same   {@code DefaultParameterValue} instance on a <cite>best effort</cite> basis.<div class="note"><b>Rational:</b> the same parameter value is often used in many different coordinate operations. For example all <cite>Universal Transverse Mercator</cite> (UTM) projections use the same scale factor (0.9996) and false easting (500000 metres). </div>
 * @param < T > The type of the value stored in the given parameter.
 * @param parameter The parameter to make unmodifiable, or {@code null}.
 * @return An unmodifiable implementation of the given parameter, or {@code null} if the given parameter was null.
 * @since 0.6
 */
public static <T>DefaultParameterValue<T> unmodifiable(final ParameterValue<T> parameter){
  return UnmodifiableParameterValue.create(parameter);
}

Fixed version (ground truth):
/** 
 * Returns an unmodifiable implementation of the given parameter value. This method shall be used only with: <ul> <li>immutable   {@linkplain #getDescriptor() descriptor},</li> <li>immutable or null   {@linkplain #getUnit() unit}, and</li> <li>immutable or   {@linkplain Cloneable cloneable} parameter {@linkplain #getValue() value}.</li> </ul> If the parameter value implements the   {@link Cloneable} interface and has a public {@code clone()} method,then that value will be cloned every time the  {@link #getValue()} method is invoked.The value is not cloned by this method however; it is caller's responsibility to not modify the value of the given  {@code parameter} instance after this method call.<div class="section">Instances sharing</div> If this method is invoked more than once with equal  {@linkplain #getDescriptor() descriptor},  {@linkplain #getValue() value} and {@linkplain #getUnit() unit}, then this method will return the same   {@code DefaultParameterValue} instance on a <cite>best effort</cite> basis.<div class="note"><b>Rational:</b> the same parameter value is often used in many different coordinate operations. For example all <cite>Universal Transverse Mercator</cite> (UTM) projections use the same scale factor (0.9996) and false easting (500000 metres). </div>
 * @param < T > The type of the value stored in the given parameter.
 * @param parameter The parameter to make unmodifiable, or {@code null}.
 * @return An unmodifiable implementation of the given parameter, or {@code null} if the given parameter was null.
 * @since 0.6
 * @see DefaultParameterValueGroup#unmodifiable(ParameterValueGroup)
 */
public static <T>DefaultParameterValue<T> unmodifiable(final ParameterValue<T> parameter){
  return UnmodifiableParameterValue.create(parameter);
}