code: public M moveUp(int amount)
      {
          Checks.notNegative(amount, "Provided amount");
          if (selectedPosition == -1)
              throw new IllegalStateException("Cannot move until an item has been selected. Use #selectPosition first.");
          if (ascendingOrder)
          {
              Checks.check(selectedPosition - amount >= 0,
                      "Amount provided to move up is too large and would be out of bounds." +
                              "Selected position: " + selectedPosition + " Amount: " + amount + " Largest Position: " + orderList.size());
          }
          else
          {
              Checks.check(selectedPosition + amount < orderList.size(),
                      "Amount provided to move up is too large and would be out of bounds." +
                              "Selected position: " + selectedPosition + " Amount: " + amount + " Largest Position: " + orderList.size());
          }
  
          if (ascendingOrder)
              return moveTo(selectedPosition - amount);
          else
              return moveTo(selectedPosition + amount);
      }
docs: Moves the currently selected entity {@code amount} positions <b>UP</b>
  in order by pushing all entities down by one position.
  
  @param  amount
  The amount of positions that should be moved
  
  @throws java.lang.IllegalStateException
  If no entity has been selected yet
  @throws java.lang.IllegalArgumentException
  If the specified amount would cause the entity to go out-of-bounds
  
  @return The current OrderAction sub-implementation instance
  
  @see    #moveTo(int)