@Override public PhaseTapChanger add() { if (tapPosition == null) { throw new ValidationException(transformer, "tap position is not set"); } if (steps.isEmpty()) { throw new ValidationException(transformer, "a phase tap changer shall have at least one step"); } int highTapPosition = lowTapPosition + steps.size() - 1; if (tapPosition < lowTapPosition || tapPosition > highTapPosition) { throw new ValidationException(transformer, "incorrect tap position " + tapPosition + " [" + lowTapPosition + ", " + highTapPosition + "]"); } ValidationUtil.checkPhaseTapChangerRegulation(transformer, regulationMode, regulationValue, regulating, regulationTerminal, getNetwork()); PhaseTapChangerImpl tapChanger = new PhaseTapChangerImpl(transformer, lowTapPosition, steps, regulationTerminal, tapPosition, regulating, regulationMode, regulationValue); transformer.setPhaseTapChanger(tapChanger); return tapChanger; }