code: public int constrains(GeneralNameInterface inputName) throws UnsupportedOperationException {
          int constraintType;
          if (inputName == null)
              constraintType = NAME_DIFF_TYPE;
          else if (inputName.getType() != NAME_X400)
              constraintType = NAME_DIFF_TYPE;
          else
              //Narrowing, widening, and match constraints not defined in rfc2459 for X400Address
              throw new UnsupportedOperationException("Narrowing, widening, and match are not supported for X400Address.");
          return constraintType;
      }
docs: Return type of constraint inputName places on this name:<ul>
  <li>NAME_DIFF_TYPE = -1: input name is different type from name (i.e. does not constrain).
  <li>NAME_MATCH = 0: input name matches name.
  <li>NAME_NARROWS = 1: input name narrows name (is lower in the naming subtree)
  <li>NAME_WIDENS = 2: input name widens name (is higher in the naming subtree)
  <li>NAME_SAME_TYPE = 3: input name does not match or narrow name, but is same type.
  </ul>.  These results are used in checking NameConstraints during
  certification path verification.
  
  @param inputName to be checked for being constrained
  @returns constraint type above
  @throws UnsupportedOperationException if name is same type, but comparison operations are
  not supported for this name type.