docs: public static boolean contextIsCompatible(InstancesHeader originalContext,
              InstancesHeader newContext) {
  
          if (newContext.numClasses() < originalContext.numClasses()) {
              return false; // rule 1
          }
          if (newContext.numAttributes() < originalContext.numAttributes()) {
              return false; // rule 2
          }
          int oPos = 0;
          int nPos = 0;
          while (oPos < originalContext.numAttributes()) {
              if (oPos == originalContext.classIndex()) {
                  oPos++;
                  if (!(oPos < originalContext.numAttributes())) {
                      break;
                  }
              }
              if (nPos == newContext.classIndex()) {
                  nPos++;
              }
              if (originalContext.attribute(oPos).isNominal()) {
                  if (!newContext.attribute(nPos).isNominal()) {
                      return false; // rule 4
                  }
                  if (newContext.attribute(nPos).numValues() < originalContext.attribute(oPos).numValues()) {
                      return false; // rule 3
                  }
              } else {
                  assert (originalContext.attribute(oPos).isNumeric());
                  if (!newContext.attribute(nPos).isNumeric()) {
                      return false; // rule 4
                  }
              }
              oPos++;
              nPos++;
          }
          return true; // all checks clear
      }