code: public Optional<ImmutableSubstitution<ImmutableTerm>> computeMGU(ImmutableFunctionalTerm term1, ImmutableFunctionalTerm term2) {
          Substitution mutableSubstitution = unifierUtilities.getMGU(immutabilityTools.convertToMutableFunction(term1),
                  immutabilityTools.convertToMutableFunction(term2));
  
          if (mutableSubstitution == null) {
              return Optional.empty();
          }
          return Optional.of(substitutionTools.convertMutableSubstitution(mutableSubstitution));
      }
docs: TODO: explain