Program: 92159
Project: 92159
Buggy source:
/** 
 * Parses a   {@code "PROJCS"} element.This element has the following pattern: {@preformat text}PROJCS["<name>", <geographic cs>, <projection>,  <parameter>,}*, <linear unit> {,<twin axes>}{,<authority>}] }
 * @param parent The parent element.
 * @return The {@code "PROJCS"} element as a {@link ProjectedCRS} object.
 * @throws ParseException if the {@code "GEOGCS"} element can not be parsed.
 */
private ProjectedCRS parseProjCS(final Element parent) throws ParseException {
  final Element element=parent.pullElement(WKTKeywords.ProjCS);
  final String name=element.pullString("String_Node_Str");
  final GeographicCRS geoCRS=parseGeoGCS(element);
  final Unit<Length> linearUnit=parseUnit(element,SI.METRE);
  final Conversion conversion=parseProjection(element,linearUnit,(convention == Convention.WKT1_COMMON_UNITS) ? NonSI.DEGREE_ANGLE : geoCRS.getCoordinateSystem().getAxis(0).getUnit().asType(Angle.class));
  CoordinateSystemAxis axis0=parseAxis(element,false,linearUnit,false);
  CoordinateSystemAxis axis1=null;
  try {
    if (axis0 != null) {
      axis1=parseAxis(element,false,linearUnit,true);
    }
    if (axis0 == null || isAxisIgnored) {
      axis0=createAxis(AxisNames.EASTING,"String_Node_Str",AxisDirection.EAST,linearUnit);
      axis1=createAxis(AxisNames.NORTHING,"String_Node_Str",AxisDirection.NORTH,linearUnit);
    }
    final Map<String,?> properties=parseAuthorityAndClose(element,name);
    return crsFactory.createProjectedCRS(properties,geoCRS,conversion,csFactory.createCartesianCS(properties,axis0,axis1));
  }
 catch (  FactoryException exception) {
    throw element.parseFailed(exception);
  }
}

Fixed version (ground truth):
/** 
 * Parses a   {@code "PROJCS"} element.This element has the following pattern: {@preformat text}PROJCS["<name>", <geographic cs>, <projection>,  <parameter>,}*, <linear unit> {,<twin axes>}{,<authority>}] }
 * @param parent The parent element.
 * @return The {@code "PROJCS"} element as a {@link ProjectedCRS} object.
 * @throws ParseException if the {@code "GEOGCS"} element can not be parsed.
 */
private ProjectedCRS parseProjCS(final Element parent) throws ParseException {
  final Element element=parent.pullElement(WKTKeywords.ProjCS);
  final String name=element.pullString("String_Node_Str");
  final GeographicCRS geoCRS=parseGeoGCS(element);
  final Unit<Length> linearUnit=parseUnit(element,SI.METRE);
  final boolean usesCommonUnits=convention.usesCommonUnits();
  final Conversion conversion=parseProjection(element,usesCommonUnits ? SI.METRE : linearUnit,usesCommonUnits ? NonSI.DEGREE_ANGLE : geoCRS.getCoordinateSystem().getAxis(0).getUnit().asType(Angle.class));
  CoordinateSystemAxis axis0=parseAxis(element,false,linearUnit,false);
  CoordinateSystemAxis axis1=null;
  try {
    if (axis0 != null) {
      axis1=parseAxis(element,false,linearUnit,true);
    }
    if (axis0 == null || isAxisIgnored) {
      axis0=createAxis(AxisNames.EASTING,"String_Node_Str",AxisDirection.EAST,linearUnit);
      axis1=createAxis(AxisNames.NORTHING,"String_Node_Str",AxisDirection.NORTH,linearUnit);
    }
    final Map<String,?> properties=parseAuthorityAndClose(element,name);
    return crsFactory.createProjectedCRS(properties,geoCRS,conversion,csFactory.createCartesianCS(properties,axis0,axis1));
  }
 catch (  FactoryException exception) {
    throw element.parseFailed(exception);
  }
}