@Override public RatioTapChanger add() { if (tapPosition == null) { throw new ValidationException(parent, "tap position is not set"); } if (steps.isEmpty()) { throw new ValidationException(parent, "ratio tap changer should have at least one step"); } int highTapPosition = lowTapPosition + steps.size() - 1; if (tapPosition < lowTapPosition || tapPosition > highTapPosition) { throw new ValidationException(parent, "incorrect tap position " + tapPosition + " [" + lowTapPosition + ", " + highTapPosition + "]"); } ValidationUtil.checkRatioTapChangerRegulation(parent, loadTapChangingCapabilities, regulating, regulationTerminal, targetV, getNetwork()); RatioTapChangerImpl tapChanger = new RatioTapChangerImpl(parent, lowTapPosition, steps, regulationTerminal, loadTapChangingCapabilities, tapPosition, regulating, targetV); parent.setRatioTapChanger(tapChanger); return tapChanger; }