class_docstr: A specialized tree edge that allows shared variable bindings
  between nonterminals on the left-hand side and right-hand side.
  
  Each ``FeatureTreeEdge`` contains a set of ``bindings``, i.e., a
  dictionary mapping from variables to values.  If the edge is not
  complete, then these bindings are simply stored.  However, if the
  edge is complete, then the constructor applies these bindings to
  every nonterminal in the edge whose symbol implements the
  interface ``SubstituteBindingsI``.
class_docstr_tok: ["A","specialized","tree","edge","that","allows","shared","variable","bindings","between","nonterminals","on","the","left-hand","side","and","right-hand","side",".","Each","``","FeatureTreeEdge","``","contains","a","set","of","``","bindings","``",",","i.e.",",","a","dictionary","mapping","from","variables","to","values",".","If","the","edge","is","not","complete",",","then","these","bindings","are","simply","stored",".","However",",","if","the","edge","is","complete",",","then","the","constructor","applies","these","bindings","to","every","nonterminal","in","the","edge","whose","symbol","implements","the","interface","``","SubstituteBindingsI","``","."]
docstr: :return: A new ``FeatureTreeEdge`` formed from this edge.
      The new edge's dot position is increased by ``1``,
      and its end index will be replaced by ``new_end``.
  :rtype: FeatureTreeEdge
  :param new_end: The new end index.
  :type new_end: int
  :param bindings: Bindings for the new edge.
  :type bindings: dict
docstr_tok: [":","return",":","A","new","``","FeatureTreeEdge","``","formed","from","this","edge",".","The","new","edge","'s","dot","position","is","increased","by","``","1","``",",","and","its","end","index","will","be","replaced","by","``","new_end","``",".",":","rtype",":","FeatureTreeEdge",":","param","new_end",":","The","new","end","index",".",":","type","new_end",":","int",":","param","bindings",":","Bindings","for","the","new","edge",".",":","type","bindings",":","dict"]
code: def move_dot_forward(self, new_end, bindings=None):
      """
      :return: A new ``FeatureTreeEdge`` formed from this edge.
          The new edge's dot position is increased by ``1``,
          and its end index will be replaced by ``new_end``.
      :rtype: FeatureTreeEdge
      :param new_end: The new end index.
      :type new_end: int
      :param bindings: Bindings for the new edge.
      :type bindings: dict
      """
      return FeatureTreeEdge(
          span=(self._span[0], new_end),
          lhs=self._lhs,
          rhs=self._rhs,
          dot=self._dot + 1,
          bindings=bindings,
      )
  
imports: from time import perf_counter
  from nltk.featstruct import TYPE, FeatStruct, find_variables, unify
  from nltk.grammar import CFG, FeatStructNonterminal, Nonterminal, Production, is_nonterminal, is_terminal
  from nltk.parse.chart import BottomUpPredictCombineRule, BottomUpPredictRule, CachedTopDownPredictRule, Chart, ChartParser, EdgeI, EmptyPredictRule, FundamentalRule, LeafInitRule, SingleEdgeFundamentalRule, TopDownInitRule, TreeEdge
  from nltk.sem import logic
  from nltk.tree import Tree
label_desc: Use image node_id 3 for calling the FeatureTreeEdge obj's underlying member method code with example usage: obj.move_dot_forward(new_end, bindings) and returns: FeatureTreeEdge