private void checkConstruction(Restriction restriction, DirectoryString res) throws IOException {
    checkValues(restriction, res);

    restriction = Restriction.getInstance(restriction);

    checkValues(restriction, res);

    ASN1InputStream aIn = new ASN1InputStream(restriction.toASN1Object().getEncoded());

    ASN1String str = (ASN1String) aIn.readObject();

    restriction = Restriction.getInstance(str);

    checkValues(restriction, res);
  }
  public void performTest() throws Exception {
    DirectoryString res = new DirectoryString("test");
    Restriction restriction = new Restriction(res.getString());

    checkConstruction(restriction, res);

    try {
      Restriction.getInstance(new Object());

      fail("getInstance() failed to detect bad object.");
    } catch (IllegalArgumentException e) {
      // expected
    }
  }
 private void checkValues(Restriction restriction, DirectoryString res) {
   checkMandatoryField("restriction", res, restriction.getRestriction());
 }