docs: public static long getOpNum(String name, Op.Type type) {
          if (type == Op.Type.LOOP) {
              return 0;
          } else if (type == Op.Type.RETURN) {
              return 40;
          } else if (type == Op.Type.IF) {
              return 30;
          } else if (type == Op.Type.CONDITIONAL) {
              return 10;
          } else if (type == Op.Type.MERGE) {
              return 60L;
          } else if (type == Op.Type.LOOP_COND) {
              return 70L;
          } else if (type == Op.Type.NEXT_ITERATION) {
              return 80L;
          } else if (type == Op.Type.EXIT) {
              return 90L;
          } else if (type == Op.Type.ENTER) {
              return 100L;
          } else if (type == Op.Type.CUSTOM) {
              val name2 = Nd4j.getExecutioner().getCustomOperations().get(name.toLowerCase());
              if (name2 == null) {
                  val name3 = Nd4j.getExecutioner().getCustomOperations().get(name);
                  if (name3 == null)
                      return 0;
                  else
                      return name3.getHash();
              } else
                  return name2.getHash();
              //return Nd4j.getExecutioner().getCustomOperations().get(name.toLowerCase()).getHash();
  
          } else {
              try {
                  DifferentialFunction op =  DifferentialFunctionClassHolder.getInstance().getInstance(name);
                  return  op.opNum();
              } catch (Exception e) {
                  throw new RuntimeException("Could not find op number for operation: [" + name + "]",e);
              }
          }
      }