code: public static <C extends Sequence<D>, D extends Compound> DistanceMatrix pamMLdistance(
  			MultipleSequenceAlignment<C, D> msa) {
  
  		// Need to import PAM1 matrix to biojava TODO
  		//SubstitutionMatrix<AminoAcidCompound> PAM1 = SubstitutionMatrixHelper.getPAM250();
  
  		throw new IllegalStateException("PAM ML distance calculation not implemented!");
  	}
docs: The PAM (Point Accepted Mutations) distance is a measure of evolutionary
  distance in protein sequences. The PAM unit represents an average
  substitution rate of 1% per site. The fractional dissimilarity (D) of two
  aligned sequences is related with the PAM distance (d) by the equation:
  
  <pre>
  D = sum(fi * (1 - M<sub>ii</sub><sup>d</sup>))
  </pre>
  
  Where the sum is for all 20 AA, fi denotes the natural fraction of the
  given AA and M is the substitution matrix (in this case the PAM1 matrix).
  <p>
  To calculate the PAM distance between two aligned sequences the maximum
  likelihood (ML) approach is used, which consists in finding d that
  maximazies the function:
  
  <pre>
  L(d) = product(f<sub>ai</sub> * (1 - M<sub>ai,bi</sub><sup>d</sup>))
  </pre>
  
  Where the product is for every position i in the alignment, and ai and bi
  are the AA at position i in the first and second aligned sequences,
  respectively.
  
  @param msa
  MultipleSequenceAlignment
  @return