public class Datatype {
  // Derived datatypes
  public static Datatype Contiguous(int count, Datatype oldtype)
                                            throws MPIException {...}
  public static Datatype Vector(int count, int blocklength, int stride,
                                Datatype oldtype)
                                            throws MPIException {...}
  public static Datatype Hvector(int count, int blocklength, int stride,
                                 Datatype oldtype)
                                            throws MPIException {...}
  public static Datatype Indexed(int [] array_of_blocklengths,
                                 int [] array_of_displacements,
                                 Datatype oldtype)
                                            throws MPIException {...}
  public static Datatype Hindexed(int [] array_of_blocklengths,
                                  int [] array_of_displacements,
                                  Datatype oldtype)
                                            throws MPIException {...}
  public static Datatype Struct(int [] array_of_blocklengths,
                                int [] array_of_displacements,
                                Datatype [] array_of_types)
                                            throws MPIException {...}
  public int Extent() throws MPIException {...}
  public int Lb() throws MPIException {...}
  public int Ub() throws MPIException {...}
  public int Size() throws MPIException {...}
  public void Commit() throws MPIException {...}
  public void finalize() throws MPIException {...}
  ...
}