static int mkDirectionKey(Direction dir){
  if (dir == Out) {
    return 0;
  }
 else   if (dir == NullableOut) {
    return 1;
  }
 else   if (dir == Pure) {
    return 2;
  }
 else   if (dir instanceof In) {
    In in=(In)dir;
    return 3 + 8 * in.paramId() + in.nullityMask;
  }
 else {
    InOut inOut=(InOut)dir;
    return 3 + 8 * inOut.paramId() + 2 + inOut.valueId();
  }
}

static int mkDirectionKey ( Direction dir ) { if ( dir == Out ) { return 0 ; } else if ( dir == NullableOut ) { return 1 ; } else if ( dir == Pure ) { return 2 ; } else if ( dir instanceof In ) { In in = ( In ) dir ; return 3 + 8 * in . paramId ( ) + in . nullityMask ; } else { InOut inOut = ( InOut ) dir ; return 3 + 8 * inOut . paramId ( ) + 2 + inOut . valueId ( ) ; } }
converts direction object to int . 0 - out 1 - nullableout 2 - pure 3 - 0 - th not_null 4 - 0 - th nullable . . . 11 - 1 - st not_null 12 - 1 - st nullable
