/**
 * Represents a class.
 * @since 2.3
 */
public interface ClassMetadata extends ComponentMetadata {
    /**
     * Method to define the persistence modifier.
     * @param mod persistence modifier
     */
    ClassMetadata setPersistenceModifier(ClassPersistenceModifier mod);

    /**
     * Accessor for the persistence modifier.
     * @return persistence modifier
     */
    ClassPersistenceModifier getPersistenceModifier();

    /**
     * Add a new field to this class.
     * @param name Name of the field
     * @return The FieldMetadata
     */
    FieldMetadata newFieldMetadata(String name);

    /**
     * Add a new field to this class.
     * @param fld The field
     * @return The FieldMetadata
     */
    FieldMetadata newFieldMetadata(Field fld);
}
