# Hierarchy For All Packages

Package Hierarchies:

- jebl.evolution.align,
- jebl.evolution.align.scores,
- jebl.evolution.aligners,
- jebl.evolution.alignments,
- jebl.evolution.characters,
- jebl.evolution.coalescent,
- jebl.evolution.distances,
- jebl.evolution.graphs,
- jebl.evolution.io,
- jebl.evolution.parsimony,
- jebl.evolution.sequences,
- jebl.evolution.substmodel,
- jebl.evolution.taxa,
- jebl.evolution.treemetrics,
- jebl.evolution.trees,
- jebl.evolution.treesimulation,
- jebl.math,
- jebl.util

## Class Hierarchy

- java.lang.Object
  - jebl.evolution.substmodel.AbstractRateMatrix (implements jebl.evolution.substmodel.RateMatrix)
    - jebl.evolution.substmodel.AminoAcidModel
      - jebl.evolution.substmodel.WAG
  - jebl.evolution.trees.AbstractRootedTree (implements jebl.evolution.trees.RootedTree)
    - jebl.evolution.trees.FilteredRootedTree
      - jebl.evolution.trees.SortedRootedTree
      - jebl.evolution.trees.TransformedRootedTree
    - jebl.evolution.trees.MutableRootedTree
    - jebl.evolution.trees.ReRootedTree
    - jebl.evolution.trees.RootedFromUnrooted
    - jebl.evolution.trees.RootedSubtree
  - jebl.evolution.align.Align
    - jebl.evolution.align.MaximalSegmentPair
    - jebl.evolution.align.NeedlemanWunsch
    - jebl.evolution.align.NeedlemanWunschAffine
    - jebl.evolution.align.NeedlemanWunschLinearSpace
    - jebl.evolution.align.NeedlemanWunschLinearSpaceAffine (implements jebl.evolution.align.PairwiseAligner)
    - jebl.evolution.align.NonOverlapMultipleLocalAffine
    - jebl.evolution.align.OldNeedlemanWunschAffine
    - jebl.evolution.align.OverlapAlign
    - jebl.evolution.align.SmithWaterman
    - jebl.evolution.align.SmithWatermanLinearSpace
    - jebl.evolution.align.SmithWatermanLinearSpaceAffine
  - jebl.evolution.align.AlignCommand
  - jebl.evolution.align.AlignmentTreeBuilderFactory
  - jebl.evolution.align.AlignmentTreeBuilderFactory.Result
  - jebl.evolution.sequences.AminoAcids
  - jebl.util.Attributable.Utils
  - jebl.util.AttributableHelper (implements jebl.util.Attributable)
  - jebl.evolution.align.BartonSternberg (implements jebl.evolution.align.MultipleAligner)
  - jebl.evolution.trees.BaseEdge (implements jebl.evolution.graphs.Edge)
  - jebl.evolution.trees.BaseNode (implements jebl.evolution.graphs.Node)
  - jebl.evolution.alignments.BasicAlignment (implements jebl.evolution.alignments.Alignment)
  - jebl.evolution.distances.BasicDistanceMatrix (implements jebl.evolution.distances.DistanceMatrix)
    - jebl.evolution.distances.F84DistanceMatrix
    - jebl.evolution.distances.HKYDistanceMatrix
    - jebl.evolution.distances.JukesCantorDistanceMatrix
    - jebl.evolution.align.SequenceAlignmentsDistanceMatrix
    - jebl.evolution.distances.TamuraNeiDistanceMatrix
  - jebl.evolution.sequences.BasicSequence (implements jebl.evolution.sequences.Sequence)
  - jebl.evolution.treemetrics.BilleraMetric (implements jebl.evolution.treemetrics.RootedTreeMetric)
  - jebl.math.Binomial
  - jebl.evolution.io.ByteBuilder (implements java.lang.Appendable, java.lang.CharSequence)
  - jebl.evolution.trees.CalculateSplitRates
  - jebl.evolution.sequences.CanonicalSequence (implements jebl.evolution.sequences.Sequence)
  - jebl.evolution.treemetrics.CladeHeightMetric (implements jebl.evolution.treemetrics.RootedTreeMetric)
  - jebl.evolution.trees.CladeSystem
    - jebl.evolution.trees.AttributedCladeSystem
  - jebl.evolution.trees.ClusteringTreeBuilder<T> (implements jebl.evolution.trees.TreeBuilder<T>)
    - jebl.evolution.trees.NeighborJoiningTreeBuilder
  - jebl.evolution.coalescent.Coalescent (implements jebl.math.MultivariateFunction)
  - jebl.evolution.treesimulation.CoalescentIntervalGenerator (implements jebl.evolution.treesimulation.IntervalGenerator)
  - jebl.evolution.sequences.Codons
  - jebl.evolution.sequences.CodonSequence (implements jebl.evolution.sequences.Sequence)
  - jebl.evolution.trees.CompactRootedTree (implements jebl.evolution.trees.RootedTree)
  - jebl.evolution.alignments.ConsensusSequence (implements jebl.evolution.sequences.Sequence)
  - jebl.evolution.trees.ConsensusTreeBuilder<T> (implements jebl.evolution.trees.TreeBuilder<T>)
  - jebl.evolution.coalescent.ConstantPopulation (implements jebl.evolution.coalescent.DemographicFunction)
    - jebl.evolution.coalescent.ExponentialGrowth
      - jebl.evolution.coalescent.CataclysmicDemographic
      - jebl.evolution.coalescent.ConstExponential
      - jebl.evolution.coalescent.Expansion
      - jebl.evolution.coalescent.LogisticGrowth
        - jebl.evolution.coalescent.ConstLogistic
        - jebl.evolution.coalescent.ExponentialLogistic
  - jebl.evolution.characters.ContinuousCharacter (implements jebl.evolution.characters.Character)
  - jebl.evolution.coalescent.DemographicFunction.Utils
  - jebl.evolution.characters.DiscreteCharacter (implements jebl.evolution.characters.Character)
  - jebl.evolution.coalescent.EmpiricalDemographicFunction (implements jebl.evolution.coalescent.DemographicFunction)
  - jebl.evolution.io.FastaExporter (implements jebl.evolution.io.SequenceExporter)
  - jebl.evolution.io.FastaImporter (implements jebl.evolution.io.ImmediateSequenceImporter, jebl.evolution.io.SequenceImporter)
  - jebl.evolution.sequences.FilteredSequence (implements jebl.evolution.sequences.Sequence)
    - jebl.evolution.sequences.GaplessSequence
    - jebl.evolution.sequences.TranslatedSequence
  - jebl.evolution.parsimony.FitchParsimony (implements jebl.evolution.parsimony.ParsimonyCriterion)
  - jebl.util.FixedBitSet
  - jebl.math.GammaFunction
  - jebl.evolution.sequences.GeneticCode
  - jebl.evolution.graphs.Graph.Utils
  - jebl.util.HashPair<T>
  - jebl.evolution.io.ImportHelper
  - jebl.evolution.coalescent.IntervalList.Utils
  - jebl.evolution.coalescent.Intervals (implements jebl.evolution.coalescent.IntervalList)
  - jebl.math.MachineAccuracy
  - jebl.math.MatrixCalc
  - jebl.evolution.substmodel.MatrixExponential (implements java.lang.Cloneable, java.io.Serializable)
  - jebl.evolution.io.MEGAExporter (implements jebl.evolution.io.AlignmentExporter)
  - jebl.math.MinimiserMonitor.Utils
  - jebl.evolution.distances.ModelBasedDistanceMatrix
  - jebl.evolution.trees.MostProbableTopology
  - jebl.math.MultivariateMinimum
    - jebl.math.OrthogonalSearch
  - jebl.evolution.io.NewickExporter (implements jebl.evolution.io.TreeExporter)
  - jebl.evolution.io.NewickImporter (implements jebl.evolution.io.TreeImporter)
  - jebl.evolution.io.NexusExporter (implements jebl.evolution.io.AlignmentExporter, jebl.evolution.io.SequenceExporter, jebl.evolution.io.TreeExporter)
  - jebl.evolution.io.NexusImporter (implements jebl.evolution.io.AlignmentImporter, jebl.evolution.io.DistanceMatrixImporter, jebl.evolution.io.SequenceImporter, jebl.evolution.io.TreeImporter)
  - jebl.evolution.sequences.Nucleotides
  - jebl.util.NumberFormatter
  - jebl.math.NumericalDerivative
  - jebl.math.OrderEnumerator.Utils
  - jebl.math.OrthogonalHints.Utils
  - jebl.math.OrthogonalLineFunction (implements jebl.math.UnivariateFunction)
  - jebl.evolution.align.Output
    - jebl.evolution.align.SystemOut
  - jebl.evolution.align.PairwiseAligner.Result
  - jebl.evolution.io.PHYLIPExporter (implements jebl.evolution.io.AlignmentExporter, jebl.evolution.io.TreeExporter)
  - jebl.evolution.io.PhylipSequentialImporter (implements jebl.evolution.io.SequenceImporter)
  - jebl.evolution.align.ProfileCharacter
  - jebl.util.ProgressListener (implements jebl.util.Cancelable)
    - jebl.util.BasicProgressListener
    - jebl.util.CompositeProgressListener
    - jebl.util.ProgressListener.Wrapper
  - jebl.math.Random
  - jebl.evolution.alignments.ResampledAlignment (implements jebl.evolution.alignments.Alignment)
    - jebl.evolution.alignments.BootstrappedAlignment
    - jebl.evolution.alignments.JackknifedAlignment
  - jebl.evolution.treemetrics.RobinsonsFouldMetric (implements jebl.evolution.treemetrics.RootedTreeMetric)
  - jebl.evolution.trees.RootedTreeUtils
  - jebl.evolution.align.scores.Scores (implements jebl.evolution.align.scores.ScoreMatrix)
    - jebl.evolution.align.scores.AminoAcidScores
      - jebl.evolution.align.scores.Blosum45
      - jebl.evolution.align.scores.Blosum50
      - jebl.evolution.align.scores.Blosum55
      - jebl.evolution.align.scores.Blosum60
      - jebl.evolution.align.scores.Blosum62
      - jebl.evolution.align.scores.Blosum65
      - jebl.evolution.align.scores.Blosum70
      - jebl.evolution.align.scores.Blosum75
      - jebl.evolution.align.scores.Blosum80
      - jebl.evolution.align.scores.Blosum85
      - jebl.evolution.align.scores.Blosum90
      - jebl.evolution.align.scores.Pam100
      - jebl.evolution.align.scores.Pam110
      - jebl.evolution.align.scores.Pam120
      - jebl.evolution.align.scores.Pam130
      - jebl.evolution.align.scores.Pam140
      - jebl.evolution.align.scores.Pam150
      - jebl.evolution.align.scores.Pam160
      - jebl.evolution.align.scores.Pam170
      - jebl.evolution.align.scores.Pam180
      - jebl.evolution.align.scores.Pam190
      - jebl.evolution.align.scores.Pam200
      - jebl.evolution.align.scores.Pam210
      - jebl.evolution.align.scores.Pam220
      - jebl.evolution.align.scores.Pam230
      - jebl.evolution.align.scores.Pam240
      - jebl.evolution.align.scores.Pam250
    - jebl.evolution.align.scores.NucleotideScores
      - jebl.evolution.align.scores.Hamming
      - jebl.evolution.align.scores.JukesCantor
    - jebl.evolution.align.scores.SubstScoreMatrix
  - jebl.evolution.align.scores.ScoresFactory
  - jebl.evolution.align.SequenceShuffler
  - jebl.evolution.sequences.SequenceTester
  - jebl.evolution.sequences.SequenceType.Utils
  - jebl.evolution.trees.SimpleRootedTree (implements jebl.evolution.trees.RootedTree)
  - jebl.evolution.trees.SimpleTree (implements jebl.evolution.trees.Tree)
  - jebl.evolution.trees.SplitSystem
  - jebl.evolution.trees.SplitUtils
  - jebl.evolution.sequences.State (implements java.lang.Comparable<T>)
    - jebl.evolution.sequences.AminoAcidState
    - jebl.evolution.sequences.CodonState
    - jebl.evolution.sequences.NucleotideState
  - jebl.evolution.sequences.StateClassification.Default (implements jebl.evolution.sequences.StateClassification)
  - jebl.evolution.io.TabDelimitedImporter (implements jebl.evolution.io.DistanceMatrixImporter)
  - jebl.evolution.taxa.Taxon (implements jebl.util.Attributable, java.lang.Comparable<T>)
  - jebl.evolution.taxa.TaxonomicLevel
  - java.lang.Throwable (implements java.io.Serializable)
    - java.lang.Exception
      - jebl.evolution.graphs.Graph.NoEdgeException
      - jebl.evolution.io.ImportException
        - jebl.evolution.io.ImportException.BadFormatException
        - jebl.evolution.io.ImportException.DuplicateFieldException
        - jebl.evolution.io.ImportException.DuplicateTaxaException
        - jebl.evolution.io.ImportException.MissingFieldException
        - jebl.evolution.io.ImportException.ShortSequenceException
        - jebl.evolution.io.ImportException.TooFewTaxaException
        - jebl.evolution.io.ImportException.UnknownTaxonException
        - jebl.evolution.io.ImportException.UnparsableDataException
        - jebl.evolution.io.NexusImporter.MissingBlockException
      - jebl.math.MatrixCalcException
        - jebl.math.MatrixCalcException.NotSquareMatrixException
        - jebl.math.MatrixCalcException.PositiveDefiniteException
      - java.lang.RuntimeException
        - java.lang.IllegalArgumentException
          - jebl.evolution.distances.CannotBuildDistanceMatrixException
      - jebl.evolution.sequences.SequenceStateException
    - jebl.evolution.taxa.MissingTaxonException
  - jebl.evolution.align.Traceback
  - jebl.evolution.trees.TreeBiPartitionInfo
  - jebl.evolution.trees.TreeBuilderFactory
  - jebl.evolution.trees.TreeChangeEvent
  - jebl.evolution.trees.TreeChangeListener
  - jebl.evolution.trees.TreeSelectionChangeEvent
  - jebl.evolution.treesimulation.TreeSimulator
  - jebl.math.UnivariateMinimum
  - jebl.evolution.graphs.Utils
  - jebl.evolution.sequences.Utils
  - jebl.evolution.trees.Utils
  - jebl.util.Utils

## Interface Hierarchy

- jebl.evolution.aligners.Aligner
- jebl.evolution.io.AlignmentExporter
- jebl.evolution.io.AlignmentImporter
- jebl.util.Attributable
  - jebl.evolution.graphs.Edge
  - jebl.evolution.graphs.Graph
    - jebl.evolution.trees.Tree
      - jebl.evolution.trees.RootedTree
  - jebl.evolution.graphs.Node
  - jebl.evolution.sequences.Sequence (also extends java.lang.Comparable<T>)
- jebl.util.Cancelable
- jebl.evolution.characters.Character
- jebl.evolution.characters.CharacterType
- java.lang.Cloneable
  - jebl.evolution.substmodel.RateMatrix (also extends java.io.Serializable)
- java.lang.Comparable<T>
  - jebl.evolution.sequences.Sequence (also extends jebl.util.Attributable)
- jebl.evolution.coalescent.DemographicFunction
- jebl.evolution.distances.DistanceMatrix
- jebl.evolution.io.DistanceMatrixImporter
- jebl.evolution.io.ImmediateSequenceImporter
- jebl.evolution.io.ImmediateSequenceImporter.Callback
- jebl.evolution.treesimulation.IntervalGenerator
- jebl.evolution.coalescent.IntervalList
- java.lang.Iterable<T>
  - jebl.evolution.io.TreeImporter
- jebl.math.MinimiserMonitor
- jebl.evolution.align.MultipleAligner
- jebl.math.MultivariateFunction
- jebl.math.MultivariateMinimum.Factory
- jebl.math.OrderEnumerator
- jebl.math.OrderEnumerator.OEFactory
- jebl.math.OrthogonalHints
- jebl.evolution.align.PairwiseAligner
- jebl.evolution.parsimony.ParsimonyCriterion
- jebl.evolution.alignments.Pattern
- jebl.evolution.alignments.Patterns
  - jebl.evolution.alignments.Alignment (also extends jebl.evolution.sequences.Sequences)
- jebl.evolution.treemetrics.RootedTreeMetric
- jebl.evolution.align.scores.ScoreMatrix
- jebl.evolution.io.SequenceExporter
- jebl.evolution.io.SequenceImporter
- jebl.evolution.sequences.Sequences
  - jebl.evolution.alignments.Alignment (also extends jebl.evolution.alignments.Patterns)
- jebl.evolution.sequences.SequenceType
- java.io.Serializable
  - jebl.evolution.substmodel.RateMatrix (also extends java.lang.Cloneable)
- jebl.util.SimpleListener
- jebl.evolution.sequences.StateClassification
- jebl.evolution.align.TracebackPlotter
- jebl.evolution.trees.TreeBuilder<T>
- jebl.evolution.io.TreeExporter
- jebl.math.UnivariateFunction

## Enum Class Hierarchy

- java.lang.Object
  - java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable)
    - jebl.evolution.trees.ConsensusTreeBuilder.Method
    - jebl.evolution.io.DistanceMatrixImporter.Triangle
    - jebl.evolution.io.IllegalCharacterPolicy
    - jebl.evolution.coalescent.IntervalList.IntervalType
    - jebl.util.MaybeBoolean
    - jebl.evolution.io.NexusImporter.NexusBlock
    - jebl.evolution.trees.SortedRootedTree.BranchOrdering
    - jebl.evolution.trees.TransformedRootedTree.Transform
    - jebl.evolution.trees.TreeBiPartitionInfo.DistanceNorm
    - jebl.evolution.trees.TreeBuilderFactory.ConsensusMethod
    - jebl.evolution.trees.TreeBuilderFactory.DistanceModel
    - jebl.evolution.trees.TreeBuilderFactory.Method