docs: private void processColumnTypes(ArrayList<String> names, ArrayList<String> types, int[] targ, TypeInformation[] etyp, int[] dims) {
      int next = 0;
      for(int i = 0; i < targ.length; i++) {
        if(magic_eid != null && magic_eid.reset(names.get(i)).matches()) {
          // Turn into an external ID column.
          targ[i] = next;
          etyp[next] = TypeUtil.EXTERNALID;
          dims[next] = 1;
          next++;
          continue;
        }
        else if(magic_class != null && magic_class.reset(names.get(i)).matches()) {
          // Type as ClassLabel
          targ[i] = next;
          etyp[next] = TypeUtil.CLASSLABEL;
          dims[next] = 1;
          next++;
          continue;
        }
        else if(ARFF_NUMERIC.reset(types.get(i)).matches()) {
          // Create a number vector field
          if(next > 0 && TypeUtil.NUMBER_VECTOR_FIELD.equals(etyp[next - 1])) {
            targ[i] = next - 1;
            dims[next - 1]++;
            continue;
          }
          else {
            targ[i] = next;
            etyp[next] = TypeUtil.NUMBER_VECTOR_FIELD;
            dims[next] = 1;
            next++;
            continue;
          }
        }
        else {
          // Use LabelList
          if(next > 0 && TypeUtil.LABELLIST.equals(etyp[next - 1])) {
            targ[i] = next - 1;
            dims[next - 1]++;
            continue;
          }
          else {
            targ[i] = next;
            etyp[next] = TypeUtil.LABELLIST;
            dims[next] = 1;
            next++;
            continue;
          }
        }
      }
    }