Source:
<code>public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) { int[] selected = getSelectedArray(projectionBlock); double[] results = new double[DocIdSetPlanNode.MAX_DOC_PER_CALL]; for (int i = 0; i < _elseThenStatements.size(); i++) { TransformFunction transformFunction = _elseThenStatements.get(i); FieldSpec.DataType dataType = transformFunction.getResultMetadata().getDataType(); switch (dataType) { case INT: int[] evalInts = transformFunction.transformToIntValuesSV(projectionBlock); for (int j = 0; j < selected.length; j++) { if (selected[j] == i) { results[j] = evalInts[j]; } } break; case LONG: long[] evalLongs = transformFunction.transformToLongValuesSV(projectionBlock); for (int j = 0; j < selected.length; j++) { if (selected[j] == i) { results[j] = evalLongs[j]; } } break; case FLOAT: float[] evalFloats = transformFunction.transformToFloatValuesSV(projectionBlock); for (int j = 0; j < selected.length; j++) { if (selected[j] == i) { results[j] = evalFloats[j]; } } break; case DOUBLE: <START> double[] evalDoubles = transformFunction.transformToDoubleValuesSV(projectionBlock); <END> for (int j = 0; j < selected.length; j++) { if (selected[j] == i) { results[j] = evalDoubles[j]; } } break; case STRING: String[] evalStrings = transformFunction.transformToStringValuesSV(projectionBlock); for (int j = 0; j < selected.length; j++) { if (selected[j] == i) { results[j] = new BigDecimal(evalStrings[i]).doubleValue(); } } break; default: throw new IllegalStateException(String .format("Cannot convert result type [%s] to [DOUBLE] for transform function [%s]", dataType, transformFunction)); } } return results; }</code><technical_language>I need types here. If is a literal expression of type string (the numerical), project string values. do need run types here</technical_language>

Target:
public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) { if (_resultMetadata.getDataType() != FieldSpec.DataType.DOUBLE) { return super.transformToDoubleValuesSV(projectionBlock); } int[] selected = getSelectedArray(projectionBlock); if (_doubleResults == null) { _doubleResults = new double[DocIdSetPlanNode.MAX_DOC_PER_CALL]; } for (int i = 0; i < _elseThenStatements.size(); i++) { TransformFunction transformFunction = _elseThenStatements.get(i); FieldSpec.DataType dataType = transformFunction.getResultMetadata().getDataType(); int blockNumDocs = projectionBlock.getNumDocs(); double[] evalDoubles; if (dataType == FieldSpec.DataType.DOUBLE) { evalDoubles = transformFunction.transformToDoubleValuesSV(projectionBlock); } else { evalDoubles = new double[blockNumDocs]; switch (dataType) { case INT: ArrayCopyUtils.copy(transformFunction.transformToIntValuesSV(projectionBlock), evalDoubles, blockNumDocs); break; case LONG: ArrayCopyUtils.copy(transformFunction.transformToLongValuesSV(projectionBlock), evalDoubles, blockNumDocs); break; case FLOAT: ArrayCopyUtils.copy(transformFunction.transformToFloatValuesSV(projectionBlock), evalDoubles, blockNumDocs); break; default: throw new IllegalStateException(String .format("Cannot convert result type [%s] to [DOUBLE] for transform function [%s]", dataType, transformFunction)); } } for (int j = 0; j < blockNumDocs; j++) { if (selected[j] == i) { _doubleResults[j] = evalDoubles[j]; } } } return _doubleResults; }