001package daikon.derive.binary;
002
003import daikon.VarInfo;
004import daikon.derive.DerivationFactory;
005import org.checkerframework.checker.nullness.qual.Nullable;
006
007/** Factory to produce BinaryDerivation. */
008public abstract class BinaryDerivationFactory implements DerivationFactory {
009
010  /**
011   * Create a set of derivations from two base variables. If the base variables aren't worth
012   * deriving from, returns null.
013   *
014   * @param vi1 the first of the two base variables
015   * @param vi2 the second of the two base variables
016   * @return a set of derivations based on two base variables. We allow more than one because two
017   *     base variables may have multiple derived variables, per type of derivation. Can also be
018   *     null if the two variables have nothing to derive from.
019   */
020  public abstract BinaryDerivation @Nullable [] instantiate(VarInfo vi1, VarInfo vi2);
021}