public AbsObject externalizeSpecialType(
      Object obj, ObjectSchema schema, Class javaClass, Ontology referenceOnto)
      throws OntologyException {
    try {
      AbsObject abs = schema.newInstance();

      Introspectable intro = (Introspectable) obj;
      intro.externalise(abs, referenceOnto);
      return abs;
    } catch (OntologyException oe) {
      // Just forward the exception
      throw oe;
    } catch (ClassCastException cce) {
      throw new OntologyException("Object " + obj + " is not Introspectable");
    } catch (Throwable t) {
      throw new OntologyException("Schema and Java class do not match", t);
    }
  }
  public Object internalizeSpecialType(
      AbsObject abs, ObjectSchema schema, Class javaClass, Ontology referenceOnto)
      throws OntologyException {
    try {
      Object obj = javaClass.newInstance();
      // DEBUG System.out.println("Object created");

      Introspectable intro = (Introspectable) obj;
      intro.internalise(abs, referenceOnto);
      return intro;
    } catch (OntologyException oe) {
      // Just forward the exception
      throw oe;
    } catch (ClassCastException cce) {
      throw new OntologyException("Class for type " + abs.getTypeName() + " is not Introspectable");
    } catch (Throwable t) {
      throw new OntologyException("Schema and Java class do not match", t);
    }
  }