Вот код моего метода, все проверки есть, но валидатор отказывается принимать его, не могу понять почему?
package com.javarush.task.pro.task09.task0908;

import java.util.regex.Pattern;

/*
Двоично-шестнадцатеричный конвертер
*/

public class Solution {
    //Константы для того, чтобы сравнивать их элементы между собой и переводить числа из одной системы в другую
    private static final String HEX = "0123456789abcdef";
    private static final String[] BINARY = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001",
    "1010", "1011", "1100", "1101", "1110", "1111"};

    public static void main(String[] args) {
        String binaryNumber = "100111010000";
        System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
        String hexNumber = "9d0";
        System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
    }

    public static String toHex(String binaryNumber) {
        String hexNumber = "";
        int indexSubstring = 0;
        if (binaryNumber == "" || binaryNumber == null || !binaryNumber.matches("[0-1]+")) {
            return "";
        }
        //Ввожу объект StringBuffer для того, чтобы добавить в конце двоичного числа нули, сделав его
        // кратным 4 (по условие задачи)
        StringBuffer sb = new StringBuffer(binaryNumber);
        while ((sb.length() % 4) != 0) {
            sb.setLength(sb.length() + 1);
            sb.setCharAt(sb.length() - 1, '0');
        }
        //Делю на 4, чтобы получить количество подстрок
        int numberOfSubstring = binaryNumber.length() / 4;
        for (int i = 0; i < numberOfSubstring; i++) {
            //Условие для работы с последней подстрокой (т.к. метод substring игнорирует второй индекс, то последняя
            //подстрока выходит за длину основной строки и получается IndexOutOfBoundsException
            if (indexSubstring + 4 >= sb.length()) {
                String firstSubstring = sb.substring(indexSubstring);
                for (int j = 0; j < BINARY.length; j++) {
                    if (firstSubstring.equals(BINARY[j])) {
                        firstSubstring = HEX.charAt(j) + "";
                        hexNumber = hexNumber + firstSubstring;
                        break;
                    }
                }
            } else {
                //Основное условие для работы с подстроками
                String firstSubstring = sb.substring(indexSubstring, indexSubstring + 4);
                for (int j = 0; j < BINARY.length; j++) {
                    if (firstSubstring.equals(BINARY[j])) {
                        firstSubstring = HEX.charAt(j) + "";
                        hexNumber = hexNumber + firstSubstring;
                        break;
                    }
                }
            }
            indexSubstring += 4;
        }
        return hexNumber;
    }
}