docs: private State checkArg(char command, String arg, State state)
              throws DatatypeException, IOException {
          int mant = 0;
          int mantDig = 0;
          boolean mantPos = true;
          boolean mantRead = false;
  
          int exp = 0;
          int expDig = 0;
          int expAdj = 0;
          boolean expPos = true;
  
          switch (state.current) {
              case '-':
                  mantPos = false;
              case '+':
                  state.current = state.reader.read();
                  state = appendToContext(state);
          }
  
          m1: switch (state.current) {
              default:
                  reportUnexpected(
                          arg + " for \u201c" + command + "\u201d command",
                          state.current, state.context);
                  state = skipSubPath(state);
                  return state;
  
              case '.':
                  break;
  
              case '0':
                  mantRead = true;
                  l: for (;;) {
                      state.current = state.reader.read();
                      state = appendToContext(state);
                      switch (state.current) {
                          case '1':
                          case '2':
                          case '3':
                          case '4':
                          case '5':
                          case '6':
                          case '7':
                          case '8':
                          case '9':
                              break l;
                          case '.':
                          case 'e':
                          case 'E':
                              break m1;
                          default:
                              return state;
                          case '0':
                      }
                  }
  
              case '1':
              case '2':
              case '3':
              case '4':
              case '5':
              case '6':
              case '7':
              case '8':
              case '9':
                  mantRead = true;
                  l: for (;;) {
                      if (mantDig < 9) {
                          mantDig++;
                          mant = mant * 10 + (state.current - '0');
                      } else {
                          expAdj++;
                      }
                      state.current = state.reader.read();
                      state = appendToContext(state);
                      switch (state.current) {
                          default:
                              break l;
                          case '0':
                          case '1':
                          case '2':
                          case '3':
                          case '4':
                          case '5':
                          case '6':
                          case '7':
                          case '8':
                          case '9':
                      }
                  }
          }
  
          if (state.current == '.') {
              state.current = state.reader.read();
              state = appendToContext(state);
              m2: switch (state.current) {
                  default:
                  case 'e':
                  case 'E':
                      if (!mantRead) {
                          reportNonNumber(command, state.current, state.context);
                          return state;
                      }
                      break;
  
                  case '0':
                      if (mantDig == 0) {
                          l: for (;;) {
                              state.current = state.reader.read();
                              state = appendToContext(state);
                              expAdj--;
                              switch (state.current) {
                                  case '1':
                                  case '2':
                                  case '3':
                                  case '4':
                                  case '5':
                                  case '6':
                                  case '7':
                                  case '8':
                                  case '9':
                                      break l;
                                  default:
                                      if (!mantRead) {
                                          return state;
                                      }
                                      break m2;
                                  case '0':
                              }
                          }
                      }
                  case '1':
                  case '2':
                  case '3':
                  case '4':
                  case '5':
                  case '6':
                  case '7':
                  case '8':
                  case '9':
                      l: for (;;) {
                          if (mantDig < 9) {
                              mantDig++;
                              mant = mant * 10 + (state.current - '0');
                              expAdj--;
                          }
                          state.current = state.reader.read();
                          state = appendToContext(state);
                          switch (state.current) {
                              default:
                                  break l;
                              case '0':
                              case '1':
                              case '2':
                              case '3':
                              case '4':
                              case '5':
                              case '6':
                              case '7':
                              case '8':
                              case '9':
                          }
                      }
              }
          }
  
          switch (state.current) {
              case 'e':
              case 'E':
                  state.current = state.reader.read();
                  state = appendToContext(state);
                  switch (state.current) {
                      default:
                          reportNonNumber(command, state.current, state.context);
                          return state;
                      case '-':
                          expPos = false;
                      case '+':
                          state.current = state.reader.read();
                          state = appendToContext(state);
                          switch (state.current) {
                              default:
                                  reportNonNumber(command, state.current,
                                          state.context);
                                  return state;
                              case '0':
                              case '1':
                              case '2':
                              case '3':
                              case '4':
                              case '5':
                              case '6':
                              case '7':
                              case '8':
                              case '9':
                          }
                      case '0':
                      case '1':
                      case '2':
                      case '3':
                      case '4':
                      case '5':
                      case '6':
                      case '7':
                      case '8':
                      case '9':
                  }
  
                  en: switch (state.current) {
                      case '0':
                          l: for (;;) {
                              state.current = state.reader.read();
                              state = appendToContext(state);
                              switch (state.current) {
                                  case '1':
                                  case '2':
                                  case '3':
                                  case '4':
                                  case '5':
                                  case '6':
                                  case '7':
                                  case '8':
                                  case '9':
                                      break l;
                                  default:
                                      break en;
                                  case '0':
                              }
                          }
  
                      case '1':
                      case '2':
                      case '3':
                      case '4':
                      case '5':
                      case '6':
                      case '7':
                      case '8':
                      case '9':
                          l: for (;;) {
                              if (expDig < 3) {
                                  expDig++;
                                  exp = exp * 10 + (state.current - '0');
                              }
                              state.current = state.reader.read();
                              state = appendToContext(state);
                              switch (state.current) {
                                  default:
                                      break l;
                                  case '0':
                                  case '1':
                                  case '2':
                                  case '3':
                                  case '4':
                                  case '5':
                                  case '6':
                                  case '7':
                                  case '8':
                                  case '9':
                              }
                          }
                  }
              default:
          }
  
          if (!expPos) {
              exp = -exp;
          }
          exp += expAdj;
          if (!mantPos) {
              mant = -mant;
          }
          return state;
      }