private String createStaticFieldDeclarationJavadoc(Class clss, Property field, int indent) {
    TextBuilder buf = new TextBuilder(LINE_SEP, this.context.getIndentationToken());
    buf.append(this.newline(indent));
    buf.append("/**"); // begin javadoc

    // add formatted doc from UML if exists
    // always put model definition first so it appears
    // on package summary line for class
    String docs = getWrappedDocmentations(field.getDocumentations(), indent);
    if (docs.trim().length() > 0) {
      buf.append(docs);
      buf.append(newline(indent));
      buf.append(" * <p></p>");
      buf.append(newline(indent));
      buf.append(" *");
    }

    buf.append(newline(indent));
    buf.append(
        " * Represents the logical <a href=\"http://docs.plasma-sdo.org/api/org/plasma/sdo/PlasmaProperty.html\">Property</a> <b>");
    buf.append(field.getName());
    buf.append(
        "</b> which is part of the <a href=\"http://docs.plasma-sdo.org/api/org/plasma/sdo/PlasmaType.html\">Type</a> <b>");
    buf.append(clss.getName());
    buf.append("</b>.");

    // data store mapping
    if (clss.getAlias() != null
        && clss.getAlias().getPhysicalName() != null
        && field.getAlias() != null
        && field.getAlias().getPhysicalName() != null) {
      buf.append(this.newline(indent));
      buf.append(" *");
      buf.append(this.newline(indent));
      buf.append(" * <p></p>");
      buf.append(this.newline(indent));
      buf.append(" * <b>Data Store Mapping:</b>");
      buf.append(this.newline(indent));
      buf.append(" * Corresponds to the physical data store element <b>");
      buf.append(clss.getAlias().getPhysicalName() + "." + field.getAlias().getPhysicalName());
      buf.append("</b>.");
    }

    buf.append(this.newline(indent));
    buf.append(" */"); // end javadoc	
    return buf.toString();
  }
  protected String createMethodDeclarations(Class clss, Property field) {
    TextBuilder buf = new TextBuilder(LINE_SEP, this.context.getIndentationToken());
    MetaClassInfo typeClassName = this.getTypeClassName(field.getType());

    buf.append(LINE_SEP);
    createIsSetDeclaration(null, clss, field, typeClassName, buf);
    buf.append(";");

    buf.append(LINE_SEP);
    createUnsetterDeclaration(null, clss, field, typeClassName, buf);
    buf.append(";");

    if (field.getType() instanceof ClassRef) {
      Class targetClass = this.context.findClass((ClassRef) field.getType());

      if (!targetClass.isAbstract()) {
        buf.append(LINE_SEP);
        createCreatorDeclaration(null, clss, field, typeClassName, buf);
        buf.append(";");
      } else {
        buf.append(LINE_SEP);
        createCreatorByAbstractClassDeclaration(null, clss, field, typeClassName, buf);
        buf.append(";");
      }
    }

    if (!field.isMany()) {
      buf.append(LINE_SEP);
      createSingularGetterDeclaration(null, clss, field, typeClassName, buf);
      buf.append(";");

      buf.append(LINE_SEP);
      createSingularSetterDeclaration(null, clss, field, typeClassName, buf);
      buf.append(";");
    } else {
      buf.append(LINE_SEP);
      createManyGetterDeclaration(null, clss, field, typeClassName, buf);
      buf.append(";");

      buf.append(LINE_SEP);
      createManyIndexGetterDeclaration(null, clss, field, typeClassName, buf);
      buf.append(";");

      buf.append(LINE_SEP);
      createManyCountDeclaration(null, clss, field, typeClassName, buf);
      buf.append(";");

      buf.append(LINE_SEP);
      createManySetterDeclaration(null, clss, field, typeClassName, buf);
      buf.append(";");

      buf.append(LINE_SEP);
      createManyAdderDeclaration(null, clss, field, typeClassName, buf);
      buf.append(";");

      buf.append(LINE_SEP);
      createManyRemoverDeclaration(null, clss, field, typeClassName, buf);
      buf.append(";");
    }

    return buf.toString();
  }
  protected String createStaticFieldDeclarations(Package pkg, Class clss) {
    InterfaceProvisioning interfaceProvisioning =
        PlasmaConfig.getInstance().getSDOInterfaceProvisioning(pkg.getUri());
    if (interfaceProvisioning == null) interfaceProvisioning = this.globalInterfaceProvisioning;
    TextBuilder buf = new TextBuilder(LINE_SEP, this.context.getIndentationToken());

    // the namespace URI
    buf.appendln(
        1,
        "/** The <a href=\"http://plasma-sdo.org\">SDO</a> namespace URI associated with the <a href=\"http://docs.plasma-sdo.org/api/org/plasma/sdo/PlasmaType.html\">Type</a> for this class. */");
    buf.appendln(1, "public static final String NAMESPACE_URI = \"");
    buf.append(clss.getUri());
    buf.append("\";");
    buf.append(LINE_SEP);

    // the entity name
    buf.appendln(
        1,
        "/** The entity or <a href=\"http://docs.plasma-sdo.org/api/org/plasma/sdo/PlasmaType.html\">Type</a> logical name associated with this class. */");
    buf.appendln(1, "public static final String TYPE_NAME_");
    buf.append(toConstantName(clss.getName()));
    buf.append(" = \"");
    buf.append(clss.getName());
    buf.append("\";");

    buf.appendln(1, "");

    switch (interfaceProvisioning.getPropertyNameStyle()) {
      case ENUMS:
        switch (interfaceProvisioning.getEnumSource()) {
          case DERIVED:
            // the static enums
            buf.appendln(
                1,
                "/** The declared logical property names for this <a href=\"http://docs.plasma-sdo.org/api/org/plasma/sdo/PlasmaType.html\">Type</a>. */");
            buf.appendln(1, "public static enum PROPERTY {");
            int enumCount = 0;
            for (Property field : clss.getProperties()) {
              if (enumCount > 0) buf.append(",");
              buf.append(this.newline(2));
              String javadoc = createStaticFieldDeclarationJavadoc(clss, field, 2);
              buf.append(javadoc);
              buf.append(this.newline(2));
              buf.append(field.getName());
              enumCount++;
            }
            buf.appendln(1, "}");
            break;
          case EXTERNAL: // noop
            break;
          default:
            throw new TextProvisioningException(
                "unexpected enum source, " + interfaceProvisioning.getEnumSource());
        }
        break;
      case CONSTANTS:
        // static constants
        buf.appendln(1, "");
        for (Property field : clss.getProperties()) {
          String javadoc = createStaticFieldDeclarationJavadoc(clss, field, 1);
          buf.appendln(1, javadoc);

          buf.appendln(1, "public static final String ");
          buf.append(toConstantName(field.getName()));
          buf.append(" = \"");
          buf.append(field.getName());
          buf.append("\";");
        }
        buf.appendln(1, "");
        break;
      default:
    }

    return buf.toString();
  }