test_class.file: base/isomorphism/src/test/java/org/openscience/cdk/isomorphism/AbstractVFStateTest.java
test_class.identifier: AbstractVFStateTest
test_case.body: @Test
      public void nextMTerminal() {
          AbstractVFState state = create(5, 10);
          state.size = 2;
          state.m2[0] = 1;
          state.m2[1] = 0;
          state.t1[1] = 1; // query vertex is in terminal set
          state.t2[4] = 1; // <- first terminal (not kept returned for now - allow disconnected)
          assertThat(state.nextM(1, -1), is(4));
      }
test_case.class_method_signature: AbstractVFStateTest.nextMTerminal()
test_case.full_signature: @Test public void nextMTerminal()
test_case.identifier: nextMTerminal
test_case.invocations: create assertThat nextM is
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void nextMTerminal()
focal_class.declarator: UNMAPPED = -1
focal_class.modifier: protected static final
focal_class.original_string: protected static final int UNMAPPED = -1;
focal_class.type: int
focal_class.var_name: UNMAPPED
focal_class.declarator: g1
focal_class.modifier: protected final
focal_class.original_string: protected final int[][]    g1, g2;
focal_class.type: int[][]
focal_class.var_name: g1
focal_class.declarator: m1
focal_class.modifier: protected final
focal_class.original_string: protected final int[]      m1, m2;
focal_class.type: int[]
focal_class.var_name: m1
focal_class.declarator: t1
focal_class.modifier: protected final
focal_class.original_string: protected final int[]      t1, t2;
focal_class.type: int[]
focal_class.var_name: t1
focal_class.declarator: size
focal_class.modifier: protected
focal_class.original_string: protected int              size;
focal_class.type: int
focal_class.var_name: size
focal_class.file: base/isomorphism/src/main/java/org/openscience/cdk/isomorphism/AbstractVFState.java
focal_class.identifier: AbstractVFState
focal_class.class_method_signature: AbstractVFState.AbstractVFState(final int[][] g1, final int[][] g2)
focal_class.full_signature: public  AbstractVFState(final int[][] g1, final int[][] g2)
focal_class.identifier: AbstractVFState
focal_class.modifiers: public
focal_class.parameters: (final int[][] g1, final int[][] g2)
focal_class.signature:  AbstractVFState(final int[][] g1, final int[][] g2)
focal_class.class_method_signature: AbstractVFState.nextN(int n)
focal_class.full_signature: @Override final int nextN(int n)
focal_class.identifier: nextN
focal_class.modifiers: @Override final
focal_class.parameters: (int n)
focal_class.return: int
focal_class.signature: int nextN(int n)
focal_class.class_method_signature: AbstractVFState.nextM(int n, int m)
focal_class.full_signature: @Override final int nextM(int n, int m)
focal_class.identifier: nextM
focal_class.modifiers: @Override final
focal_class.parameters: (int n, int m)
focal_class.return: int
focal_class.signature: int nextM(int n, int m)
focal_class.class_method_signature: AbstractVFState.nMax()
focal_class.full_signature: @Override final int nMax()
focal_class.identifier: nMax
focal_class.modifiers: @Override final
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int nMax()
focal_class.class_method_signature: AbstractVFState.mMax()
focal_class.full_signature: @Override final int mMax()
focal_class.identifier: mMax
focal_class.modifiers: @Override final
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int mMax()
focal_class.class_method_signature: AbstractVFState.add(int n, int m)
focal_class.full_signature: @Override final boolean add(int n, int m)
focal_class.identifier: add
focal_class.modifiers: @Override final
focal_class.parameters: (int n, int m)
focal_class.return: boolean
focal_class.signature: boolean add(int n, int m)
focal_class.class_method_signature: AbstractVFState.remove(int n, int m)
focal_class.full_signature: @Override final void remove(int n, int m)
focal_class.identifier: remove
focal_class.modifiers: @Override final
focal_class.parameters: (int n, int m)
focal_class.return: void
focal_class.signature: void remove(int n, int m)
focal_class.class_method_signature: AbstractVFState.feasible(int n, int m)
focal_class.full_signature: abstract boolean feasible(int n, int m)
focal_class.identifier: feasible
focal_class.modifiers: abstract
focal_class.parameters: (int n, int m)
focal_class.return: boolean
focal_class.signature: boolean feasible(int n, int m)
focal_class.class_method_signature: AbstractVFState.mapping()
focal_class.full_signature: @Override int[] mapping()
focal_class.identifier: mapping
focal_class.modifiers: @Override
focal_class.parameters: ()
focal_class.return: int[]
focal_class.signature: int[] mapping()
focal_class.class_method_signature: AbstractVFState.size()
focal_class.full_signature: @Override int size()
focal_class.identifier: size
focal_class.modifiers: @Override
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int size()
focal_class.superclass: extends State
focal_method.body: @Override
      final int nextM(int n, int m) {
          if (size == 0) return m + 1;
          // if the query vertex 'n' is in the terminal set (t1) then the
          // target vertex must be in the terminal set (t2)
          for (int i = m + 1; i < g2.length; i++)
              if (m2[i] == UNMAPPED && (t1[n] == 0 || t2[i] > 0)) return i;
          return mMax();
      }
focal_method.class_method_signature: AbstractVFState.nextM(int n, int m)
focal_method.full_signature: @Override final int nextM(int n, int m)
focal_method.identifier: nextM
focal_method.invocations: mMax
focal_method.modifiers: @Override final
focal_method.parameters: (int n, int m)
focal_method.return: int
focal_method.signature: int nextM(int n, int m)