code: public static IDifference construct(String name, boolean[] first, boolean[] second) {
          if (first == null && second == null) return null;
  
          BooleanArrayDifference totalDiff = new BooleanArrayDifference(name);
          int firstLength = first == null ? 0 : first.length;
          int secondLength = second == null ? 0 : second.length;
          if (firstLength == secondLength) {
              for (int i = 0; i < firstLength; i++) {
                  totalDiff.addChild(BooleanDifference.construct("" + i, first[i], second[i]));
              }
          } else if (firstLength < secondLength) {
              for (int i = 0; i < firstLength; i++) {
                  totalDiff.addChild(BooleanDifference.construct("" + i, first[i], second[i]));
              }
              for (int i = firstLength; i < secondLength; i++) {
                  totalDiff.addChild(BooleanDifference.construct("" + i, null, second[i]));
              }
          } else { // secondLength < firstLength
              for (int i = 0; i < secondLength; i++) {
                  totalDiff.addChild(BooleanDifference.construct("" + i, first[i], second[i]));
              }
              for (int i = secondLength; i < firstLength; i++) {
                  totalDiff.addChild(BooleanDifference.construct("" + i, first[i], null));
              }
          }
          if (totalDiff.childCount() == 0) {
              return null;
          }
          return totalDiff;
      }
docs: Constructs a new {@link IDifference} object.
  
  @param name   a name reflecting the nature of the created {@link IDifference}
  @param first  the first object to compare
  @param second the second object to compare
  @return       an {@link IDifference} reflecting the differences between the first and second object