code: private static TransitionType getTransitionHorizontalVertical(TransitionType a, TransitionType b, int ox, int oy)
      {
          final TransitionType type;
          if (ox == -1 && oy == 0)
          {
              type = TransitionType.from(!b.getDownRight(), a.getDownLeft(), !b.getUpRight(), a.getUpLeft());
          }
          else if (ox == 1 && oy == 0)
          {
              type = TransitionType.from(a.getDownRight(), !b.getDownLeft(), a.getUpRight(), !b.getUpLeft());
          }
          else if (ox == 0 && oy == 1)
          {
              type = TransitionType.from(!b.getDownRight(), !b.getDownLeft(), a.getUpRight(), a.getUpLeft());
          }
          else if (ox == 0 && oy == -1)
          {
              type = TransitionType.from(a.getDownRight(), a.getDownLeft(), !b.getUpRight(), !b.getUpLeft());
          }
          else
          {
              type = null;
          }
          return type;
      }
docs: Get the new transition type from two transitions on horizontal and vertical axis.
  
  @param a The inner transition.
  @param b The outer transition.
  @param ox The horizontal offset to update.
  @param oy The vertical offset to update.
  @return The new transition type, <code>null</code> if none.