// Path: java/upparse/util/Ipredicate.java
// public interface Ipredicate {
//   public boolean pred(int t);
// }


import java.util.Arrays;
import upparse.util.Ipredicate;
  }

  private boolean isIState(int j) {
    if (j < 2)
      return false;
    final int r = reducedTagVal(j);
    return r == I;
  }
  
  private boolean isBState(int j) {
    if (j < 2)
      return false;
    final int r = reducedTagVal(j);
    return r == B;
  }
  
  private int reducedTagVal(int tag) {
    final int val = (tag - 2) % 2;
    return val + 2;
  }
  
  private boolean isOState(int j) {
    return j == O;
  }
  
  private boolean isStopState(int j) {
    return j == STOP;
  }

  @Override
// Path: java/upparse/util/Ipredicate.java
// public interface Ipredicate {
//   public boolean pred(int t);
// }


// Path: java/upparse/corpus/BnInOEncoder.java
import java.util.Arrays;
import upparse.util.Ipredicate;

  }

  private boolean isIState(int j) {
    if (j < 2)
      return false;
    final int r = reducedTagVal(j);
    return r == I;
  }
  
  private boolean isBState(int j) {
    if (j < 2)
      return false;
    final int r = reducedTagVal(j);
    return r == B;
  }
  
  private int reducedTagVal(int tag) {
    final int val = (tag - 2) % 2;
    return val + 2;
  }
  
  private boolean isOState(int j) {
    return j == O;
  }
  
  private boolean isStopState(int j) {
    return j == STOP;
  }

  @Override
  public Ipredicate isStopPred() {