public static CPInstruction parseSingleInstruction(String str)
      throws DMLUnsupportedOperationException, DMLRuntimeException {
    if (str == null || str.isEmpty()) return null;

    CPINSTRUCTION_TYPE cptype = InstructionUtils.getCPType(str);
    if (cptype == null)
      throw new DMLRuntimeException("Unable derive cptype for instruction: " + str);
    CPInstruction cpinst = parseSingleInstruction(cptype, str);
    if (cpinst == null) throw new DMLRuntimeException("Unable to parse instruction: " + str);
    return cpinst;
  }