All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.shiftleft.codepropertygraph.generated.Traversals.scala Maven / Gradle / Ivy

package io.shiftleft.codepropertygraph.generated.traversals
import io.shiftleft.codepropertygraph.generated.nodes

/** not supposed to be used directly by users, hence the `bootstrap` in the name */
object languagebootstrap extends ConcreteStoredConversions

object Accessors {
  import io.shiftleft.codepropertygraph.generated.accessors.languagebootstrap.*

  /* accessors for concrete stored nodes start */
  final class Traversal_Property_ALIAS_TYPE_FULL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasAliasTypeFullNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to aliasTypeFullName property */
    def aliasTypeFullName: Iterator[String] =
      traversal.flatMap(_.aliasTypeFullName)

    /** Traverse to nodes where the aliasTypeFullName matches the regular expression `value`
      */
    def aliasTypeFullName(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        aliasTypeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.aliasTypeFullName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the aliasTypeFullName matches at least one of the regular expressions in `values`
      */
    def aliasTypeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.aliasTypeFullName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where aliasTypeFullName matches `value` exactly.
      */
    def aliasTypeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 0, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.aliasTypeFullName; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where aliasTypeFullName matches one of the elements in `values` exactly.
      */
    def aliasTypeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) aliasTypeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.aliasTypeFullName; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where aliasTypeFullName does not match the regular expression `value`.
      */
    def aliasTypeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.aliasTypeFullName.isEmpty || node.aliasTypeFullName.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.aliasTypeFullName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where aliasTypeFullName does not match any of the regular expressions in `values`.
      */
    def aliasTypeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.aliasTypeFullName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_Property_ARGUMENT_INDEX[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasArgumentIndexEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to argumentIndex property */
    def argumentIndex: Iterator[Int] =
      traversal.map(_.argumentIndex)

    /** Traverse to nodes where the argumentIndex equals the given `value`
      */
    def argumentIndex(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex == value }

    /** Traverse to nodes where the argumentIndex equals at least one of the given `values`
      */
    def argumentIndex(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => vset.contains(node.argumentIndex) }
    }

    /** Traverse to nodes where the argumentIndex is not equal to the given `value`
      */
    def argumentIndexNot(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex != value }

    /** Traverse to nodes where the argumentIndex is not equal to any of the given `values`
      */
    def argumentIndexNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => !vset.contains(node.argumentIndex) }
    }

    /** Traverse to nodes where the argumentIndex is greater than the given `value`
      */
    def argumentIndexGt(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex > value }

    /** Traverse to nodes where the argumentIndex is greater than or equal the given `value`
      */
    def argumentIndexGte(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex >= value }

    /** Traverse to nodes where the argumentIndex is less than the given `value`
      */
    def argumentIndexLt(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex < value }

    /** Traverse to nodes where the argumentIndex is less than or equal the given `value`
      */
    def argumentIndexLte(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex <= value }

  }
  final class Traversal_Property_ARGUMENT_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasArgumentNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to argumentName property */
    def argumentName: Iterator[String] =
      traversal.flatMap(_.argumentName)

    /** Traverse to nodes where the argumentName matches the regular expression `value`
      */
    def argumentName(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        argumentNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.argumentName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the argumentName matches at least one of the regular expressions in `values`
      */
    def argumentName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.argumentName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where argumentName matches `value` exactly.
      */
    def argumentNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 2, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.argumentName; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where argumentName matches one of the elements in `values` exactly.
      */
    def argumentNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) argumentNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.argumentName; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where argumentName does not match the regular expression `value`.
      */
    def argumentNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.argumentName.isEmpty || node.argumentName.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.argumentName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where argumentName does not match any of the regular expressions in `values`.
      */
    def argumentNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.argumentName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_Property_AST_PARENT_FULL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasAstParentFullNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to astParentFullName property */
    def astParentFullName: Iterator[String] =
      traversal.map(_.astParentFullName)

    /** Traverse to nodes where the astParentFullName matches the regular expression `value`
      */
    def astParentFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        astParentFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.astParentFullName).matches }
      }

    /** Traverse to nodes where the astParentFullName matches at least one of the regular expressions in `values`
      */
    def astParentFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.astParentFullName).matches } }
    }

    /** Traverse to nodes where astParentFullName matches `value` exactly.
      */
    def astParentFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 3, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.astParentFullName == value }
    }

    /** Traverse to nodes where astParentFullName matches one of the elements in `values` exactly.
      */
    def astParentFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) astParentFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.astParentFullName) }
      }

    /** Traverse to nodes where astParentFullName does not match the regular expression `value`.
      */
    def astParentFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.astParentFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.astParentFullName).matches }
      }
    }

    /** Traverse to nodes where astParentFullName does not match any of the regular expressions in `values`.
      */
    def astParentFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.astParentFullName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_AST_PARENT_TYPE[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasAstParentTypeEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to astParentType property */
    def astParentType: Iterator[String] =
      traversal.map(_.astParentType)

    /** Traverse to nodes where the astParentType matches the regular expression `value`
      */
    def astParentType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        astParentTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.astParentType).matches }
      }

    /** Traverse to nodes where the astParentType matches at least one of the regular expressions in `values`
      */
    def astParentType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.astParentType).matches } }
    }

    /** Traverse to nodes where astParentType matches `value` exactly.
      */
    def astParentTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 4, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.astParentType == value }
    }

    /** Traverse to nodes where astParentType matches one of the elements in `values` exactly.
      */
    def astParentTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) astParentTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.astParentType) }
      }

    /** Traverse to nodes where astParentType does not match the regular expression `value`.
      */
    def astParentTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.astParentType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.astParentType).matches }
      }
    }

    /** Traverse to nodes where astParentType does not match any of the regular expressions in `values`.
      */
    def astParentTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.astParentType).matches }.isEmpty }
    }

  }
  final class Traversal_Property_CANONICAL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasCanonicalNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to canonicalName property */
    def canonicalName: Iterator[String] =
      traversal.map(_.canonicalName)

    /** Traverse to nodes where the canonicalName matches the regular expression `value`
      */
    def canonicalName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        canonicalNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.canonicalName).matches }
      }

    /** Traverse to nodes where the canonicalName matches at least one of the regular expressions in `values`
      */
    def canonicalName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.canonicalName).matches } }
    }

    /** Traverse to nodes where canonicalName matches `value` exactly.
      */
    def canonicalNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 5, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.canonicalName == value }
    }

    /** Traverse to nodes where canonicalName matches one of the elements in `values` exactly.
      */
    def canonicalNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) canonicalNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.canonicalName) }
      }

    /** Traverse to nodes where canonicalName does not match the regular expression `value`.
      */
    def canonicalNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.canonicalName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.canonicalName).matches }
      }
    }

    /** Traverse to nodes where canonicalName does not match any of the regular expressions in `values`.
      */
    def canonicalNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.canonicalName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_CLASS_NAME[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasClassNameEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to className property */
    def className: Iterator[String] =
      traversal.map(_.className)

    /** Traverse to nodes where the className matches the regular expression `value`
      */
    def className(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        classNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.className).matches }
      }

    /** Traverse to nodes where the className matches at least one of the regular expressions in `values`
      */
    def className(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.className).matches } }
    }

    /** Traverse to nodes where className matches `value` exactly.
      */
    def classNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 6, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.className == value }
    }

    /** Traverse to nodes where className matches one of the elements in `values` exactly.
      */
    def classNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) classNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.className) }
      }

    /** Traverse to nodes where className does not match the regular expression `value`.
      */
    def classNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.className != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.className).matches }
      }
    }

    /** Traverse to nodes where className does not match any of the regular expressions in `values`.
      */
    def classNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.className).matches }.isEmpty }
    }

  }
  final class Traversal_Property_CLASS_SHORT_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasClassShortNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to classShortName property */
    def classShortName: Iterator[String] =
      traversal.map(_.classShortName)

    /** Traverse to nodes where the classShortName matches the regular expression `value`
      */
    def classShortName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        classShortNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.classShortName).matches }
      }

    /** Traverse to nodes where the classShortName matches at least one of the regular expressions in `values`
      */
    def classShortName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.classShortName).matches } }
    }

    /** Traverse to nodes where classShortName matches `value` exactly.
      */
    def classShortNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 7, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.classShortName == value }
    }

    /** Traverse to nodes where classShortName matches one of the elements in `values` exactly.
      */
    def classShortNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) classShortNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.classShortName) }
      }

    /** Traverse to nodes where classShortName does not match the regular expression `value`.
      */
    def classShortNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.classShortName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.classShortName).matches }
      }
    }

    /** Traverse to nodes where classShortName does not match any of the regular expressions in `values`.
      */
    def classShortNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.classShortName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_CLOSURE_BINDING_ID[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasClosureBindingIdEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to closureBindingId property */
    def closureBindingId: Iterator[String] =
      traversal.flatMap(_.closureBindingId)

    /** Traverse to nodes where the closureBindingId matches the regular expression `value`
      */
    def closureBindingId(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        closureBindingIdExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.closureBindingId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the closureBindingId matches at least one of the regular expressions in `values`
      */
    def closureBindingId(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.closureBindingId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where closureBindingId matches `value` exactly.
      */
    def closureBindingIdExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 8, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.closureBindingId; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where closureBindingId matches one of the elements in `values` exactly.
      */
    def closureBindingIdExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) closureBindingIdExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.closureBindingId; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where closureBindingId does not match the regular expression `value`.
      */
    def closureBindingIdNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.closureBindingId.isEmpty || node.closureBindingId.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.closureBindingId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where closureBindingId does not match any of the regular expressions in `values`.
      */
    def closureBindingIdNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.closureBindingId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_Property_CLOSURE_ORIGINAL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasClosureOriginalNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to closureOriginalName property */
    def closureOriginalName: Iterator[String] =
      traversal.flatMap(_.closureOriginalName)

    /** Traverse to nodes where the closureOriginalName matches the regular expression `value`
      */
    def closureOriginalName(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        closureOriginalNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.closureOriginalName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the closureOriginalName matches at least one of the regular expressions in `values`
      */
    def closureOriginalName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.closureOriginalName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where closureOriginalName matches `value` exactly.
      */
    def closureOriginalNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 9, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.closureOriginalName; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where closureOriginalName matches one of the elements in `values` exactly.
      */
    def closureOriginalNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) closureOriginalNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.closureOriginalName; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where closureOriginalName does not match the regular expression `value`.
      */
    def closureOriginalNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.closureOriginalName.isEmpty || node.closureOriginalName.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.closureOriginalName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where closureOriginalName does not match any of the regular expressions in `values`.
      */
    def closureOriginalNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.closureOriginalName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_Property_CODE[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasCodeEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to code property */
    def code: Iterator[String] =
      traversal.map(_.code)

    /** Traverse to nodes where the code matches the regular expression `value`
      */
    def code(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        codeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.code).matches }
      }

    /** Traverse to nodes where the code matches at least one of the regular expressions in `values`
      */
    def code(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.code).matches } }
    }

    /** Traverse to nodes where code matches `value` exactly.
      */
    def codeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 10, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.code == value }
    }

    /** Traverse to nodes where code matches one of the elements in `values` exactly.
      */
    def codeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) codeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.code) }
      }

    /** Traverse to nodes where code does not match the regular expression `value`.
      */
    def codeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.code != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.code).matches }
      }
    }

    /** Traverse to nodes where code does not match any of the regular expressions in `values`.
      */
    def codeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.code).matches }.isEmpty }
    }

  }
  final class Traversal_Property_COLUMN_NUMBER[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasColumnNumberEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to columnNumber property */
    def columnNumber: Iterator[Int] =
      traversal.flatMap(_.columnNumber)

    /** Traverse to nodes where the columnNumber equals the given `value`
      */
    def columnNumber(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the columnNumber equals at least one of the given `values`
      */
    def columnNumber(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the columnNumber is not equal to the given `value`
      */
    def columnNumberNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the columnNumber does not equal any one of the given `values`
      */
    def columnNumberNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the columnNumber is greater than the given `value`
      */
    def columnNumberGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the columnNumber is greater than or equal the given `value`
      */
    def columnNumberGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the columnNumber is less than the given `value`
      */
    def columnNumberLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the columnNumber is less than or equal the given `value`
      */
    def columnNumberLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get <= value
      }

  }
  final class Traversal_Property_COLUMN_NUMBER_END[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasColumnNumberEndEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to columnNumberEnd property */
    def columnNumberEnd: Iterator[Int] =
      traversal.flatMap(_.columnNumberEnd)

    /** Traverse to nodes where the columnNumberEnd equals the given `value`
      */
    def columnNumberEnd(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the columnNumberEnd equals at least one of the given `values`
      */
    def columnNumberEnd(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the columnNumberEnd is not equal to the given `value`
      */
    def columnNumberEndNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the columnNumberEnd does not equal any one of the given `values`
      */
    def columnNumberEndNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the columnNumberEnd is greater than the given `value`
      */
    def columnNumberEndGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the columnNumberEnd is greater than or equal the given `value`
      */
    def columnNumberEndGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the columnNumberEnd is less than the given `value`
      */
    def columnNumberEndLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the columnNumberEnd is less than or equal the given `value`
      */
    def columnNumberEndLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get <= value
      }

  }
  final class Traversal_Property_CONTAINED_REF[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasContainedRefEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to containedRef property */
    def containedRef: Iterator[String] =
      traversal.map(_.containedRef)

    /** Traverse to nodes where the containedRef matches the regular expression `value`
      */
    def containedRef(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        containedRefExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.containedRef).matches }
      }

    /** Traverse to nodes where the containedRef matches at least one of the regular expressions in `values`
      */
    def containedRef(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.containedRef).matches } }
    }

    /** Traverse to nodes where containedRef matches `value` exactly.
      */
    def containedRefExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 13, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.containedRef == value }
    }

    /** Traverse to nodes where containedRef matches one of the elements in `values` exactly.
      */
    def containedRefExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) containedRefExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.containedRef) }
      }

    /** Traverse to nodes where containedRef does not match the regular expression `value`.
      */
    def containedRefNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.containedRef != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.containedRef).matches }
      }
    }

    /** Traverse to nodes where containedRef does not match any of the regular expressions in `values`.
      */
    def containedRefNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.containedRef).matches }.isEmpty }
    }

  }
  final class Traversal_Property_CONTENT[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasContentEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to content property */
    def content: Iterator[String] =
      traversal.map(_.content)

    /** Traverse to nodes where the content matches the regular expression `value`
      */
    def content(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        contentExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.content).matches }
      }

    /** Traverse to nodes where the content matches at least one of the regular expressions in `values`
      */
    def content(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.content).matches } }
    }

    /** Traverse to nodes where content matches `value` exactly.
      */
    def contentExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 14, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.content == value }
    }

    /** Traverse to nodes where content matches one of the elements in `values` exactly.
      */
    def contentExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) contentExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.content) }
      }

    /** Traverse to nodes where content does not match the regular expression `value`.
      */
    def contentNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.content != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.content).matches }
      }
    }

    /** Traverse to nodes where content does not match any of the regular expressions in `values`.
      */
    def contentNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.content).matches }.isEmpty }
    }

  }
  final class Traversal_Property_CONTROL_STRUCTURE_TYPE[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasControlStructureTypeEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to controlStructureType property */
    def controlStructureType: Iterator[String] =
      traversal.map(_.controlStructureType)

    /** Traverse to nodes where the controlStructureType matches the regular expression `value`
      */
    def controlStructureType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        controlStructureTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.controlStructureType).matches }
      }

    /** Traverse to nodes where the controlStructureType matches at least one of the regular expressions in `values`
      */
    def controlStructureType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.controlStructureType).matches } }
    }

    /** Traverse to nodes where controlStructureType matches `value` exactly.
      */
    def controlStructureTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 15, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.controlStructureType == value }
    }

    /** Traverse to nodes where controlStructureType matches one of the elements in `values` exactly.
      */
    def controlStructureTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) controlStructureTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.controlStructureType) }
      }

    /** Traverse to nodes where controlStructureType does not match the regular expression `value`.
      */
    def controlStructureTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.controlStructureType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.controlStructureType).matches }
      }
    }

    /** Traverse to nodes where controlStructureType does not match any of the regular expressions in `values`.
      */
    def controlStructureTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.controlStructureType).matches }.isEmpty }
    }

  }
  final class Traversal_Property_DEPENDENCY_GROUP_ID[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasDependencyGroupIdEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to dependencyGroupId property */
    def dependencyGroupId: Iterator[String] =
      traversal.flatMap(_.dependencyGroupId)

    /** Traverse to nodes where the dependencyGroupId matches the regular expression `value`
      */
    def dependencyGroupId(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        dependencyGroupIdExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.dependencyGroupId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the dependencyGroupId matches at least one of the regular expressions in `values`
      */
    def dependencyGroupId(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.dependencyGroupId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where dependencyGroupId matches `value` exactly.
      */
    def dependencyGroupIdExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 16, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.dependencyGroupId; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where dependencyGroupId matches one of the elements in `values` exactly.
      */
    def dependencyGroupIdExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) dependencyGroupIdExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.dependencyGroupId; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where dependencyGroupId does not match the regular expression `value`.
      */
    def dependencyGroupIdNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.dependencyGroupId.isEmpty || node.dependencyGroupId.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.dependencyGroupId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where dependencyGroupId does not match any of the regular expressions in `values`.
      */
    def dependencyGroupIdNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.dependencyGroupId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_Property_DISPATCH_TYPE[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasDispatchTypeEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to dispatchType property */
    def dispatchType: Iterator[String] =
      traversal.map(_.dispatchType)

    /** Traverse to nodes where the dispatchType matches the regular expression `value`
      */
    def dispatchType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        dispatchTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.dispatchType).matches }
      }

    /** Traverse to nodes where the dispatchType matches at least one of the regular expressions in `values`
      */
    def dispatchType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.dispatchType).matches } }
    }

    /** Traverse to nodes where dispatchType matches `value` exactly.
      */
    def dispatchTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 17, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.dispatchType == value }
    }

    /** Traverse to nodes where dispatchType matches one of the elements in `values` exactly.
      */
    def dispatchTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) dispatchTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.dispatchType) }
      }

    /** Traverse to nodes where dispatchType does not match the regular expression `value`.
      */
    def dispatchTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.dispatchType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.dispatchType).matches }
      }
    }

    /** Traverse to nodes where dispatchType does not match any of the regular expressions in `values`.
      */
    def dispatchTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.dispatchType).matches }.isEmpty }
    }

  }
  final class Traversal_Property_DYNAMIC_TYPE_HINT_FULL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasDynamicTypeHintFullNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

  }
  final class Traversal_Property_EVALUATION_STRATEGY[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasEvaluationStrategyEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to evaluationStrategy property */
    def evaluationStrategy: Iterator[String] =
      traversal.map(_.evaluationStrategy)

    /** Traverse to nodes where the evaluationStrategy matches the regular expression `value`
      */
    def evaluationStrategy(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        evaluationStrategyExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.evaluationStrategy).matches }
      }

    /** Traverse to nodes where the evaluationStrategy matches at least one of the regular expressions in `values`
      */
    def evaluationStrategy(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.evaluationStrategy).matches } }
    }

    /** Traverse to nodes where evaluationStrategy matches `value` exactly.
      */
    def evaluationStrategyExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 19, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.evaluationStrategy == value }
    }

    /** Traverse to nodes where evaluationStrategy matches one of the elements in `values` exactly.
      */
    def evaluationStrategyExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) evaluationStrategyExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.evaluationStrategy) }
      }

    /** Traverse to nodes where evaluationStrategy does not match the regular expression `value`.
      */
    def evaluationStrategyNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.evaluationStrategy != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.evaluationStrategy).matches }
      }
    }

    /** Traverse to nodes where evaluationStrategy does not match any of the regular expressions in `values`.
      */
    def evaluationStrategyNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.evaluationStrategy).matches }.isEmpty }
    }

  }
  final class Traversal_Property_EXPLICIT_AS[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasExplicitAsEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to explicitAs property */
    def explicitAs: Iterator[Boolean] =
      traversal.flatMap(_.explicitAs)

    /** Traverse to nodes where the explicitAs equals the given `value`
      */
    def explicitAs(value: Boolean): Iterator[NodeType] =
      traversal.filter { node => node.explicitAs.isDefined && node.explicitAs.get == value }

  }
  final class Traversal_Property_FILENAME[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasFilenameEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to filename property */
    def filename: Iterator[String] =
      traversal.map(_.filename)

    /** Traverse to nodes where the filename matches the regular expression `value`
      */
    def filename(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        filenameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.filename).matches }
      }

    /** Traverse to nodes where the filename matches at least one of the regular expressions in `values`
      */
    def filename(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.filename).matches } }
    }

    /** Traverse to nodes where filename matches `value` exactly.
      */
    def filenameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 21, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.filename == value }
    }

    /** Traverse to nodes where filename matches one of the elements in `values` exactly.
      */
    def filenameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) filenameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.filename) }
      }

    /** Traverse to nodes where filename does not match the regular expression `value`.
      */
    def filenameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.filename != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.filename).matches }
      }
    }

    /** Traverse to nodes where filename does not match any of the regular expressions in `values`.
      */
    def filenameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.filename).matches }.isEmpty }
    }

  }
  final class Traversal_Property_FULL_NAME[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasFullNameEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to fullName property */
    def fullName: Iterator[String] =
      traversal.map(_.fullName)

    /** Traverse to nodes where the fullName matches the regular expression `value`
      */
    def fullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        fullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.fullName).matches }
      }

    /** Traverse to nodes where the fullName matches at least one of the regular expressions in `values`
      */
    def fullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.fullName).matches } }
    }

    /** Traverse to nodes where fullName matches `value` exactly.
      */
    def fullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 22, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.fullName == value }
    }

    /** Traverse to nodes where fullName matches one of the elements in `values` exactly.
      */
    def fullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) fullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.fullName) }
      }

    /** Traverse to nodes where fullName does not match the regular expression `value`.
      */
    def fullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.fullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.fullName).matches }
      }
    }

    /** Traverse to nodes where fullName does not match any of the regular expressions in `values`.
      */
    def fullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.fullName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_HASH[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasHashEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to hash property */
    def hash: Iterator[String] =
      traversal.flatMap(_.hash)

    /** Traverse to nodes where the hash matches the regular expression `value`
      */
    def hash(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        hashExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.hash; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the hash matches at least one of the regular expressions in `values`
      */
    def hash(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.hash; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where hash matches `value` exactly.
      */
    def hashExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 23, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.hash; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where hash matches one of the elements in `values` exactly.
      */
    def hashExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) hashExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.hash; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where hash does not match the regular expression `value`.
      */
    def hashNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.hash.isEmpty || node.hash.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.hash; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where hash does not match any of the regular expressions in `values`.
      */
    def hashNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.hash; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_Property_IMPORTED_AS[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasImportedAsEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to importedAs property */
    def importedAs: Iterator[String] =
      traversal.flatMap(_.importedAs)

    /** Traverse to nodes where the importedAs matches the regular expression `value`
      */
    def importedAs(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        importedAsExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.importedAs; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the importedAs matches at least one of the regular expressions in `values`
      */
    def importedAs(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.importedAs; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where importedAs matches `value` exactly.
      */
    def importedAsExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 24, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.importedAs; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where importedAs matches one of the elements in `values` exactly.
      */
    def importedAsExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) importedAsExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.importedAs; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where importedAs does not match the regular expression `value`.
      */
    def importedAsNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.importedAs.isEmpty || node.importedAs.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.importedAs; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where importedAs does not match any of the regular expressions in `values`.
      */
    def importedAsNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.importedAs; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_Property_IMPORTED_ENTITY[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasImportedEntityEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to importedEntity property */
    def importedEntity: Iterator[String] =
      traversal.flatMap(_.importedEntity)

    /** Traverse to nodes where the importedEntity matches the regular expression `value`
      */
    def importedEntity(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        importedEntityExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.importedEntity; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the importedEntity matches at least one of the regular expressions in `values`
      */
    def importedEntity(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.importedEntity; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where importedEntity matches `value` exactly.
      */
    def importedEntityExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 25, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.importedEntity; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where importedEntity matches one of the elements in `values` exactly.
      */
    def importedEntityExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) importedEntityExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.importedEntity; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where importedEntity does not match the regular expression `value`.
      */
    def importedEntityNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.importedEntity.isEmpty || node.importedEntity.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.importedEntity; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where importedEntity does not match any of the regular expressions in `values`.
      */
    def importedEntityNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.importedEntity; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_Property_INDEX[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIndexEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to index property */
    def index: Iterator[Int] =
      traversal.map(_.index)

    /** Traverse to nodes where the index equals the given `value`
      */
    def index(value: Int): Iterator[NodeType] =
      traversal.filter { _.index == value }

    /** Traverse to nodes where the index equals at least one of the given `values`
      */
    def index(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => vset.contains(node.index) }
    }

    /** Traverse to nodes where the index is not equal to the given `value`
      */
    def indexNot(value: Int): Iterator[NodeType] =
      traversal.filter { _.index != value }

    /** Traverse to nodes where the index is not equal to any of the given `values`
      */
    def indexNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => !vset.contains(node.index) }
    }

    /** Traverse to nodes where the index is greater than the given `value`
      */
    def indexGt(value: Int): Iterator[NodeType] =
      traversal.filter { _.index > value }

    /** Traverse to nodes where the index is greater than or equal the given `value`
      */
    def indexGte(value: Int): Iterator[NodeType] =
      traversal.filter { _.index >= value }

    /** Traverse to nodes where the index is less than the given `value`
      */
    def indexLt(value: Int): Iterator[NodeType] =
      traversal.filter { _.index < value }

    /** Traverse to nodes where the index is less than or equal the given `value`
      */
    def indexLte(value: Int): Iterator[NodeType] =
      traversal.filter { _.index <= value }

  }
  final class Traversal_Property_INHERITS_FROM_TYPE_FULL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasInheritsFromTypeFullNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to inheritsFromTypeFullName property */
    def inheritsFromTypeFullName: Iterator[String] =
      traversal.flatMap(_.inheritsFromTypeFullName)

  }
  final class Traversal_Property_IS_EXPLICIT[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIsExplicitEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to isExplicit property */
    def isExplicit: Iterator[Boolean] =
      traversal.flatMap(_.isExplicit)

    /** Traverse to nodes where the isExplicit equals the given `value`
      */
    def isExplicit(value: Boolean): Iterator[NodeType] =
      traversal.filter { node => node.isExplicit.isDefined && node.isExplicit.get == value }

  }
  final class Traversal_Property_IS_EXTERNAL[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIsExternalEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to isExternal property */
    def isExternal: Iterator[Boolean] =
      traversal.map(_.isExternal)

    /** Traverse to nodes where the isExternal equals the given `value`
      */
    def isExternal(value: Boolean): Iterator[NodeType] =
      traversal.filter { _.isExternal == value }

  }
  final class Traversal_Property_IS_VARIADIC[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIsVariadicEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to isVariadic property */
    def isVariadic: Iterator[Boolean] =
      traversal.map(_.isVariadic)

    /** Traverse to nodes where the isVariadic equals the given `value`
      */
    def isVariadic(value: Boolean): Iterator[NodeType] =
      traversal.filter { _.isVariadic == value }

  }
  final class Traversal_Property_IS_WILDCARD[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIsWildcardEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to isWildcard property */
    def isWildcard: Iterator[Boolean] =
      traversal.flatMap(_.isWildcard)

    /** Traverse to nodes where the isWildcard equals the given `value`
      */
    def isWildcard(value: Boolean): Iterator[NodeType] =
      traversal.filter { node => node.isWildcard.isDefined && node.isWildcard.get == value }

  }
  final class Traversal_Property_KEY[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasKeyEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to key property */
    def key: Iterator[String] =
      traversal.map(_.key)

    /** Traverse to nodes where the key matches the regular expression `value`
      */
    def key(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        keyExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.key).matches }
      }

    /** Traverse to nodes where the key matches at least one of the regular expressions in `values`
      */
    def key(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.key).matches } }
    }

    /** Traverse to nodes where key matches `value` exactly.
      */
    def keyExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 32, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.key == value }
    }

    /** Traverse to nodes where key matches one of the elements in `values` exactly.
      */
    def keyExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) keyExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.key) }
      }

    /** Traverse to nodes where key does not match the regular expression `value`.
      */
    def keyNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.key != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.key).matches }
      }
    }

    /** Traverse to nodes where key does not match any of the regular expressions in `values`.
      */
    def keyNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.key).matches }.isEmpty }
    }

  }
  final class Traversal_Property_LANGUAGE[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasLanguageEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to language property */
    def language: Iterator[String] =
      traversal.map(_.language)

    /** Traverse to nodes where the language matches the regular expression `value`
      */
    def language(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        languageExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.language).matches }
      }

    /** Traverse to nodes where the language matches at least one of the regular expressions in `values`
      */
    def language(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.language).matches } }
    }

    /** Traverse to nodes where language matches `value` exactly.
      */
    def languageExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 33, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.language == value }
    }

    /** Traverse to nodes where language matches one of the elements in `values` exactly.
      */
    def languageExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) languageExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.language) }
      }

    /** Traverse to nodes where language does not match the regular expression `value`.
      */
    def languageNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.language != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.language).matches }
      }
    }

    /** Traverse to nodes where language does not match any of the regular expressions in `values`.
      */
    def languageNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.language).matches }.isEmpty }
    }

  }
  final class Traversal_Property_LINE_NUMBER[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasLineNumberEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to lineNumber property */
    def lineNumber: Iterator[Int] =
      traversal.flatMap(_.lineNumber)

    /** Traverse to nodes where the lineNumber equals the given `value`
      */
    def lineNumber(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the lineNumber equals at least one of the given `values`
      */
    def lineNumber(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumber is not equal to the given `value`
      */
    def lineNumberNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the lineNumber does not equal any one of the given `values`
      */
    def lineNumberNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumber is greater than the given `value`
      */
    def lineNumberGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the lineNumber is greater than or equal the given `value`
      */
    def lineNumberGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the lineNumber is less than the given `value`
      */
    def lineNumberLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the lineNumber is less than or equal the given `value`
      */
    def lineNumberLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get <= value
      }

  }
  final class Traversal_Property_LINE_NUMBER_END[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasLineNumberEndEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to lineNumberEnd property */
    def lineNumberEnd: Iterator[Int] =
      traversal.flatMap(_.lineNumberEnd)

    /** Traverse to nodes where the lineNumberEnd equals the given `value`
      */
    def lineNumberEnd(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the lineNumberEnd equals at least one of the given `values`
      */
    def lineNumberEnd(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumberEnd is not equal to the given `value`
      */
    def lineNumberEndNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the lineNumberEnd does not equal any one of the given `values`
      */
    def lineNumberEndNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumberEnd is greater than the given `value`
      */
    def lineNumberEndGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the lineNumberEnd is greater than or equal the given `value`
      */
    def lineNumberEndGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the lineNumberEnd is less than the given `value`
      */
    def lineNumberEndLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the lineNumberEnd is less than or equal the given `value`
      */
    def lineNumberEndLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get <= value
      }

  }
  final class Traversal_Property_METHOD_FULL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasMethodFullNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to methodFullName property */
    def methodFullName: Iterator[String] =
      traversal.map(_.methodFullName)

    /** Traverse to nodes where the methodFullName matches the regular expression `value`
      */
    def methodFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        methodFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.methodFullName).matches }
      }

    /** Traverse to nodes where the methodFullName matches at least one of the regular expressions in `values`
      */
    def methodFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.methodFullName).matches } }
    }

    /** Traverse to nodes where methodFullName matches `value` exactly.
      */
    def methodFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 36, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.methodFullName == value }
    }

    /** Traverse to nodes where methodFullName matches one of the elements in `values` exactly.
      */
    def methodFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) methodFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.methodFullName) }
      }

    /** Traverse to nodes where methodFullName does not match the regular expression `value`.
      */
    def methodFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.methodFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.methodFullName).matches }
      }
    }

    /** Traverse to nodes where methodFullName does not match any of the regular expressions in `values`.
      */
    def methodFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.methodFullName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_METHOD_SHORT_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasMethodShortNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to methodShortName property */
    def methodShortName: Iterator[String] =
      traversal.map(_.methodShortName)

    /** Traverse to nodes where the methodShortName matches the regular expression `value`
      */
    def methodShortName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        methodShortNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.methodShortName).matches }
      }

    /** Traverse to nodes where the methodShortName matches at least one of the regular expressions in `values`
      */
    def methodShortName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.methodShortName).matches } }
    }

    /** Traverse to nodes where methodShortName matches `value` exactly.
      */
    def methodShortNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 37, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.methodShortName == value }
    }

    /** Traverse to nodes where methodShortName matches one of the elements in `values` exactly.
      */
    def methodShortNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) methodShortNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.methodShortName) }
      }

    /** Traverse to nodes where methodShortName does not match the regular expression `value`.
      */
    def methodShortNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.methodShortName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.methodShortName).matches }
      }
    }

    /** Traverse to nodes where methodShortName does not match any of the regular expressions in `values`.
      */
    def methodShortNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.methodShortName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_MODIFIER_TYPE[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasModifierTypeEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to modifierType property */
    def modifierType: Iterator[String] =
      traversal.map(_.modifierType)

    /** Traverse to nodes where the modifierType matches the regular expression `value`
      */
    def modifierType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        modifierTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.modifierType).matches }
      }

    /** Traverse to nodes where the modifierType matches at least one of the regular expressions in `values`
      */
    def modifierType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.modifierType).matches } }
    }

    /** Traverse to nodes where modifierType matches `value` exactly.
      */
    def modifierTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 38, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.modifierType == value }
    }

    /** Traverse to nodes where modifierType matches one of the elements in `values` exactly.
      */
    def modifierTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) modifierTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.modifierType) }
      }

    /** Traverse to nodes where modifierType does not match the regular expression `value`.
      */
    def modifierTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.modifierType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.modifierType).matches }
      }
    }

    /** Traverse to nodes where modifierType does not match any of the regular expressions in `values`.
      */
    def modifierTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.modifierType).matches }.isEmpty }
    }

  }
  final class Traversal_Property_NAME[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasNameEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_Property_NODE_LABEL[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasNodeLabelEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to nodeLabel property */
    def nodeLabel: Iterator[String] =
      traversal.map(_.nodeLabel)

    /** Traverse to nodes where the nodeLabel matches the regular expression `value`
      */
    def nodeLabel(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nodeLabelExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.nodeLabel).matches }
      }

    /** Traverse to nodes where the nodeLabel matches at least one of the regular expressions in `values`
      */
    def nodeLabel(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.nodeLabel).matches } }
    }

    /** Traverse to nodes where nodeLabel matches `value` exactly.
      */
    def nodeLabelExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 40, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.nodeLabel == value }
    }

    /** Traverse to nodes where nodeLabel matches one of the elements in `values` exactly.
      */
    def nodeLabelExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nodeLabelExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.nodeLabel) }
      }

    /** Traverse to nodes where nodeLabel does not match the regular expression `value`.
      */
    def nodeLabelNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.nodeLabel != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.nodeLabel).matches }
      }
    }

    /** Traverse to nodes where nodeLabel does not match any of the regular expressions in `values`.
      */
    def nodeLabelNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.nodeLabel).matches }.isEmpty }
    }

  }
  final class Traversal_Property_OFFSET[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasOffsetEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to offset property */
    def offset: Iterator[Int] =
      traversal.flatMap(_.offset)

    /** Traverse to nodes where the offset equals the given `value`
      */
    def offset(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the offset equals at least one of the given `values`
      */
    def offset(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offset is not equal to the given `value`
      */
    def offsetNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the offset does not equal any one of the given `values`
      */
    def offsetNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offset; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offset is greater than the given `value`
      */
    def offsetGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the offset is greater than or equal the given `value`
      */
    def offsetGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the offset is less than the given `value`
      */
    def offsetLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the offset is less than or equal the given `value`
      */
    def offsetLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get <= value
      }

  }
  final class Traversal_Property_OFFSET_END[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasOffsetEndEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to offsetEnd property */
    def offsetEnd: Iterator[Int] =
      traversal.flatMap(_.offsetEnd)

    /** Traverse to nodes where the offsetEnd equals the given `value`
      */
    def offsetEnd(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the offsetEnd equals at least one of the given `values`
      */
    def offsetEnd(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offsetEnd is not equal to the given `value`
      */
    def offsetEndNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the offsetEnd does not equal any one of the given `values`
      */
    def offsetEndNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offsetEnd is greater than the given `value`
      */
    def offsetEndGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the offsetEnd is greater than or equal the given `value`
      */
    def offsetEndGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the offsetEnd is less than the given `value`
      */
    def offsetEndLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the offsetEnd is less than or equal the given `value`
      */
    def offsetEndLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get <= value
      }

  }
  final class Traversal_Property_ORDER[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasOrderEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to order property */
    def order: Iterator[Int] =
      traversal.map(_.order)

    /** Traverse to nodes where the order equals the given `value`
      */
    def order(value: Int): Iterator[NodeType] =
      traversal.filter { _.order == value }

    /** Traverse to nodes where the order equals at least one of the given `values`
      */
    def order(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => vset.contains(node.order) }
    }

    /** Traverse to nodes where the order is not equal to the given `value`
      */
    def orderNot(value: Int): Iterator[NodeType] =
      traversal.filter { _.order != value }

    /** Traverse to nodes where the order is not equal to any of the given `values`
      */
    def orderNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => !vset.contains(node.order) }
    }

    /** Traverse to nodes where the order is greater than the given `value`
      */
    def orderGt(value: Int): Iterator[NodeType] =
      traversal.filter { _.order > value }

    /** Traverse to nodes where the order is greater than or equal the given `value`
      */
    def orderGte(value: Int): Iterator[NodeType] =
      traversal.filter { _.order >= value }

    /** Traverse to nodes where the order is less than the given `value`
      */
    def orderLt(value: Int): Iterator[NodeType] =
      traversal.filter { _.order < value }

    /** Traverse to nodes where the order is less than or equal the given `value`
      */
    def orderLte(value: Int): Iterator[NodeType] =
      traversal.filter { _.order <= value }

  }
  final class Traversal_Property_OVERLAYS[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasOverlaysEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to overlays property */
    def overlays: Iterator[String] =
      traversal.flatMap(_.overlays)

  }
  final class Traversal_Property_PACKAGE_NAME[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasPackageNameEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to packageName property */
    def packageName: Iterator[String] =
      traversal.map(_.packageName)

    /** Traverse to nodes where the packageName matches the regular expression `value`
      */
    def packageName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        packageNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.packageName).matches }
      }

    /** Traverse to nodes where the packageName matches at least one of the regular expressions in `values`
      */
    def packageName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.packageName).matches } }
    }

    /** Traverse to nodes where packageName matches `value` exactly.
      */
    def packageNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 45, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.packageName == value }
    }

    /** Traverse to nodes where packageName matches one of the elements in `values` exactly.
      */
    def packageNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) packageNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.packageName) }
      }

    /** Traverse to nodes where packageName does not match the regular expression `value`.
      */
    def packageNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.packageName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.packageName).matches }
      }
    }

    /** Traverse to nodes where packageName does not match any of the regular expressions in `values`.
      */
    def packageNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.packageName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_PARSER_TYPE_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasParserTypeNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to parserTypeName property */
    def parserTypeName: Iterator[String] =
      traversal.map(_.parserTypeName)

    /** Traverse to nodes where the parserTypeName matches the regular expression `value`
      */
    def parserTypeName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        parserTypeNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.parserTypeName).matches }
      }

    /** Traverse to nodes where the parserTypeName matches at least one of the regular expressions in `values`
      */
    def parserTypeName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.parserTypeName).matches } }
    }

    /** Traverse to nodes where parserTypeName matches `value` exactly.
      */
    def parserTypeNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 46, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.parserTypeName == value }
    }

    /** Traverse to nodes where parserTypeName matches one of the elements in `values` exactly.
      */
    def parserTypeNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) parserTypeNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.parserTypeName) }
      }

    /** Traverse to nodes where parserTypeName does not match the regular expression `value`.
      */
    def parserTypeNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.parserTypeName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.parserTypeName).matches }
      }
    }

    /** Traverse to nodes where parserTypeName does not match any of the regular expressions in `values`.
      */
    def parserTypeNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.parserTypeName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_POSSIBLE_TYPES[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasPossibleTypesEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

  }
  final class Traversal_Property_ROOT[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasRootEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to root property */
    def root: Iterator[String] =
      traversal.map(_.root)

    /** Traverse to nodes where the root matches the regular expression `value`
      */
    def root(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        rootExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.root).matches }
      }

    /** Traverse to nodes where the root matches at least one of the regular expressions in `values`
      */
    def root(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.root).matches } }
    }

    /** Traverse to nodes where root matches `value` exactly.
      */
    def rootExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 48, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.root == value }
    }

    /** Traverse to nodes where root matches one of the elements in `values` exactly.
      */
    def rootExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) rootExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.root) }
      }

    /** Traverse to nodes where root does not match the regular expression `value`.
      */
    def rootNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.root != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.root).matches }
      }
    }

    /** Traverse to nodes where root does not match any of the regular expressions in `values`.
      */
    def rootNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.root).matches }.isEmpty }
    }

  }
  final class Traversal_Property_SIGNATURE[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasSignatureEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to signature property */
    def signature: Iterator[String] =
      traversal.map(_.signature)

    /** Traverse to nodes where the signature matches the regular expression `value`
      */
    def signature(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        signatureExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.signature).matches }
      }

    /** Traverse to nodes where the signature matches at least one of the regular expressions in `values`
      */
    def signature(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.signature).matches } }
    }

    /** Traverse to nodes where signature matches `value` exactly.
      */
    def signatureExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 49, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.signature == value }
    }

    /** Traverse to nodes where signature matches one of the elements in `values` exactly.
      */
    def signatureExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) signatureExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.signature) }
      }

    /** Traverse to nodes where signature does not match the regular expression `value`.
      */
    def signatureNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.signature != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.signature).matches }
      }
    }

    /** Traverse to nodes where signature does not match any of the regular expressions in `values`.
      */
    def signatureNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.signature).matches }.isEmpty }
    }

  }
  final class Traversal_Property_SYMBOL[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasSymbolEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to symbol property */
    def symbol: Iterator[String] =
      traversal.map(_.symbol)

    /** Traverse to nodes where the symbol matches the regular expression `value`
      */
    def symbol(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        symbolExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.symbol).matches }
      }

    /** Traverse to nodes where the symbol matches at least one of the regular expressions in `values`
      */
    def symbol(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.symbol).matches } }
    }

    /** Traverse to nodes where symbol matches `value` exactly.
      */
    def symbolExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 50, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.symbol == value }
    }

    /** Traverse to nodes where symbol matches one of the elements in `values` exactly.
      */
    def symbolExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) symbolExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.symbol) }
      }

    /** Traverse to nodes where symbol does not match the regular expression `value`.
      */
    def symbolNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.symbol != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.symbol).matches }
      }
    }

    /** Traverse to nodes where symbol does not match any of the regular expressions in `values`.
      */
    def symbolNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.symbol).matches }.isEmpty }
    }

  }
  final class Traversal_Property_TYPE_DECL_FULL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasTypeDeclFullNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to typeDeclFullName property */
    def typeDeclFullName: Iterator[String] =
      traversal.map(_.typeDeclFullName)

    /** Traverse to nodes where the typeDeclFullName matches the regular expression `value`
      */
    def typeDeclFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeDeclFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeDeclFullName).matches }
      }

    /** Traverse to nodes where the typeDeclFullName matches at least one of the regular expressions in `values`
      */
    def typeDeclFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeDeclFullName).matches } }
    }

    /** Traverse to nodes where typeDeclFullName matches `value` exactly.
      */
    def typeDeclFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 51, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeDeclFullName == value }
    }

    /** Traverse to nodes where typeDeclFullName matches one of the elements in `values` exactly.
      */
    def typeDeclFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeDeclFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeDeclFullName) }
      }

    /** Traverse to nodes where typeDeclFullName does not match the regular expression `value`.
      */
    def typeDeclFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeDeclFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeDeclFullName).matches }
      }
    }

    /** Traverse to nodes where typeDeclFullName does not match any of the regular expressions in `values`.
      */
    def typeDeclFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeDeclFullName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_TYPE_FULL_NAME[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasTypeFullNameEMT]
  ](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_Property_VALUE[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasValueEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to value property */
    def value: Iterator[String] =
      traversal.map(_.value)

    /** Traverse to nodes where the value matches the regular expression `value`
      */
    def value(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        valueExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.value).matches }
      }

    /** Traverse to nodes where the value matches at least one of the regular expressions in `values`
      */
    def value(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.value).matches } }
    }

    /** Traverse to nodes where value matches `value` exactly.
      */
    def valueExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 53, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.value == value }
    }

    /** Traverse to nodes where value matches one of the elements in `values` exactly.
      */
    def valueExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) valueExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.value) }
      }

    /** Traverse to nodes where value does not match the regular expression `value`.
      */
    def valueNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.value != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.value).matches }
      }
    }

    /** Traverse to nodes where value does not match any of the regular expressions in `values`.
      */
    def valueNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.value).matches }.isEmpty }
    }

  }
  final class Traversal_Property_VERSION[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasVersionEMT]](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to version property */
    def version: Iterator[String] =
      traversal.map(_.version)

    /** Traverse to nodes where the version matches the regular expression `value`
      */
    def version(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        versionExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.version).matches }
      }

    /** Traverse to nodes where the version matches at least one of the regular expressions in `values`
      */
    def version(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.version).matches } }
    }

    /** Traverse to nodes where version matches `value` exactly.
      */
    def versionExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 54, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.version == value }
    }

    /** Traverse to nodes where version matches one of the elements in `values` exactly.
      */
    def versionExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) versionExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.version) }
      }

    /** Traverse to nodes where version does not match the regular expression `value`.
      */
    def versionNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.version != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.version).matches }
      }
    }

    /** Traverse to nodes where version does not match any of the regular expressions in `values`.
      */
    def versionNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.version).matches }.isEmpty }
    }

  }
  /* accessors for concrete stored nodes end */

  /* accessors for base nodes start */
  final class Traversal_AnnotationBase[NodeType <: nodes.AnnotationBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to fullName property */
    def fullName: Iterator[String] =
      traversal.map(_.fullName)

    /** Traverse to nodes where the fullName matches the regular expression `value`
      */
    def fullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        fullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.fullName).matches }
      }

    /** Traverse to nodes where the fullName matches at least one of the regular expressions in `values`
      */
    def fullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.fullName).matches } }
    }

    /** Traverse to nodes where fullName matches `value` exactly.
      */
    def fullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 22, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.fullName == value }
    }

    /** Traverse to nodes where fullName matches one of the elements in `values` exactly.
      */
    def fullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) fullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.fullName) }
      }

    /** Traverse to nodes where fullName does not match the regular expression `value`.
      */
    def fullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.fullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.fullName).matches }
      }
    }

    /** Traverse to nodes where fullName does not match any of the regular expressions in `values`.
      */
    def fullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.fullName).matches }.isEmpty }
    }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_AnnotationLiteralBase[NodeType <: nodes.AnnotationLiteralBase](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_AnnotationParameterBase[NodeType <: nodes.AnnotationParameterBase](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {}
  final class Traversal_AnnotationParameterAssignBase[NodeType <: nodes.AnnotationParameterAssignBase](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {}
  final class Traversal_ArrayInitializerBase[NodeType <: nodes.ArrayInitializerBase](val traversal: Iterator[NodeType])
      extends AnyVal {}
  final class Traversal_BindingBase[NodeType <: nodes.BindingBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to methodFullName property */
    def methodFullName: Iterator[String] =
      traversal.map(_.methodFullName)

    /** Traverse to nodes where the methodFullName matches the regular expression `value`
      */
    def methodFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        methodFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.methodFullName).matches }
      }

    /** Traverse to nodes where the methodFullName matches at least one of the regular expressions in `values`
      */
    def methodFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.methodFullName).matches } }
    }

    /** Traverse to nodes where methodFullName matches `value` exactly.
      */
    def methodFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 36, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.methodFullName == value }
    }

    /** Traverse to nodes where methodFullName matches one of the elements in `values` exactly.
      */
    def methodFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) methodFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.methodFullName) }
      }

    /** Traverse to nodes where methodFullName does not match the regular expression `value`.
      */
    def methodFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.methodFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.methodFullName).matches }
      }
    }

    /** Traverse to nodes where methodFullName does not match any of the regular expressions in `values`.
      */
    def methodFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.methodFullName).matches }.isEmpty }
    }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to signature property */
    def signature: Iterator[String] =
      traversal.map(_.signature)

    /** Traverse to nodes where the signature matches the regular expression `value`
      */
    def signature(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        signatureExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.signature).matches }
      }

    /** Traverse to nodes where the signature matches at least one of the regular expressions in `values`
      */
    def signature(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.signature).matches } }
    }

    /** Traverse to nodes where signature matches `value` exactly.
      */
    def signatureExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 49, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.signature == value }
    }

    /** Traverse to nodes where signature matches one of the elements in `values` exactly.
      */
    def signatureExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) signatureExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.signature) }
      }

    /** Traverse to nodes where signature does not match the regular expression `value`.
      */
    def signatureNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.signature != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.signature).matches }
      }
    }

    /** Traverse to nodes where signature does not match any of the regular expressions in `values`.
      */
    def signatureNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.signature).matches }.isEmpty }
    }

  }
  final class Traversal_BlockBase[NodeType <: nodes.BlockBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_CallBase[NodeType <: nodes.CallBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to dispatchType property */
    def dispatchType: Iterator[String] =
      traversal.map(_.dispatchType)

    /** Traverse to nodes where the dispatchType matches the regular expression `value`
      */
    def dispatchType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        dispatchTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.dispatchType).matches }
      }

    /** Traverse to nodes where the dispatchType matches at least one of the regular expressions in `values`
      */
    def dispatchType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.dispatchType).matches } }
    }

    /** Traverse to nodes where dispatchType matches `value` exactly.
      */
    def dispatchTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 17, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.dispatchType == value }
    }

    /** Traverse to nodes where dispatchType matches one of the elements in `values` exactly.
      */
    def dispatchTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) dispatchTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.dispatchType) }
      }

    /** Traverse to nodes where dispatchType does not match the regular expression `value`.
      */
    def dispatchTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.dispatchType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.dispatchType).matches }
      }
    }

    /** Traverse to nodes where dispatchType does not match any of the regular expressions in `values`.
      */
    def dispatchTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.dispatchType).matches }.isEmpty }
    }

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to methodFullName property */
    def methodFullName: Iterator[String] =
      traversal.map(_.methodFullName)

    /** Traverse to nodes where the methodFullName matches the regular expression `value`
      */
    def methodFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        methodFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.methodFullName).matches }
      }

    /** Traverse to nodes where the methodFullName matches at least one of the regular expressions in `values`
      */
    def methodFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.methodFullName).matches } }
    }

    /** Traverse to nodes where methodFullName matches `value` exactly.
      */
    def methodFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 36, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.methodFullName == value }
    }

    /** Traverse to nodes where methodFullName matches one of the elements in `values` exactly.
      */
    def methodFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) methodFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.methodFullName) }
      }

    /** Traverse to nodes where methodFullName does not match the regular expression `value`.
      */
    def methodFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.methodFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.methodFullName).matches }
      }
    }

    /** Traverse to nodes where methodFullName does not match any of the regular expressions in `values`.
      */
    def methodFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.methodFullName).matches }.isEmpty }
    }

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_ClosureBindingBase[NodeType <: nodes.ClosureBindingBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to closureBindingId property */
    def closureBindingId: Iterator[String] =
      traversal.flatMap(_.closureBindingId)

    /** Traverse to nodes where the closureBindingId matches the regular expression `value`
      */
    def closureBindingId(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        closureBindingIdExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.closureBindingId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the closureBindingId matches at least one of the regular expressions in `values`
      */
    def closureBindingId(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.closureBindingId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where closureBindingId matches `value` exactly.
      */
    def closureBindingIdExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 8, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.closureBindingId; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where closureBindingId matches one of the elements in `values` exactly.
      */
    def closureBindingIdExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) closureBindingIdExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.closureBindingId; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where closureBindingId does not match the regular expression `value`.
      */
    def closureBindingIdNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.closureBindingId.isEmpty || node.closureBindingId.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.closureBindingId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where closureBindingId does not match any of the regular expressions in `values`.
      */
    def closureBindingIdNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.closureBindingId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to closureOriginalName property */
    def closureOriginalName: Iterator[String] =
      traversal.flatMap(_.closureOriginalName)

    /** Traverse to nodes where the closureOriginalName matches the regular expression `value`
      */
    def closureOriginalName(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        closureOriginalNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.closureOriginalName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the closureOriginalName matches at least one of the regular expressions in `values`
      */
    def closureOriginalName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.closureOriginalName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where closureOriginalName matches `value` exactly.
      */
    def closureOriginalNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 9, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.closureOriginalName; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where closureOriginalName matches one of the elements in `values` exactly.
      */
    def closureOriginalNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) closureOriginalNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.closureOriginalName; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where closureOriginalName does not match the regular expression `value`.
      */
    def closureOriginalNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.closureOriginalName.isEmpty || node.closureOriginalName.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.closureOriginalName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where closureOriginalName does not match any of the regular expressions in `values`.
      */
    def closureOriginalNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.closureOriginalName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to evaluationStrategy property */
    def evaluationStrategy: Iterator[String] =
      traversal.map(_.evaluationStrategy)

    /** Traverse to nodes where the evaluationStrategy matches the regular expression `value`
      */
    def evaluationStrategy(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        evaluationStrategyExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.evaluationStrategy).matches }
      }

    /** Traverse to nodes where the evaluationStrategy matches at least one of the regular expressions in `values`
      */
    def evaluationStrategy(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.evaluationStrategy).matches } }
    }

    /** Traverse to nodes where evaluationStrategy matches `value` exactly.
      */
    def evaluationStrategyExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 19, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.evaluationStrategy == value }
    }

    /** Traverse to nodes where evaluationStrategy matches one of the elements in `values` exactly.
      */
    def evaluationStrategyExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) evaluationStrategyExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.evaluationStrategy) }
      }

    /** Traverse to nodes where evaluationStrategy does not match the regular expression `value`.
      */
    def evaluationStrategyNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.evaluationStrategy != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.evaluationStrategy).matches }
      }
    }

    /** Traverse to nodes where evaluationStrategy does not match any of the regular expressions in `values`.
      */
    def evaluationStrategyNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.evaluationStrategy).matches }.isEmpty }
    }

  }
  final class Traversal_CommentBase[NodeType <: nodes.CommentBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to filename property */
    def filename: Iterator[String] =
      traversal.map(_.filename)

    /** Traverse to nodes where the filename matches the regular expression `value`
      */
    def filename(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        filenameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.filename).matches }
      }

    /** Traverse to nodes where the filename matches at least one of the regular expressions in `values`
      */
    def filename(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.filename).matches } }
    }

    /** Traverse to nodes where filename matches `value` exactly.
      */
    def filenameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 21, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.filename == value }
    }

    /** Traverse to nodes where filename matches one of the elements in `values` exactly.
      */
    def filenameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) filenameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.filename) }
      }

    /** Traverse to nodes where filename does not match the regular expression `value`.
      */
    def filenameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.filename != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.filename).matches }
      }
    }

    /** Traverse to nodes where filename does not match any of the regular expressions in `values`.
      */
    def filenameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.filename).matches }.isEmpty }
    }

  }
  final class Traversal_ConfigFileBase[NodeType <: nodes.ConfigFileBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to content property */
    def content: Iterator[String] =
      traversal.map(_.content)

    /** Traverse to nodes where the content matches the regular expression `value`
      */
    def content(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        contentExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.content).matches }
      }

    /** Traverse to nodes where the content matches at least one of the regular expressions in `values`
      */
    def content(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.content).matches } }
    }

    /** Traverse to nodes where content matches `value` exactly.
      */
    def contentExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 14, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.content == value }
    }

    /** Traverse to nodes where content matches one of the elements in `values` exactly.
      */
    def contentExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) contentExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.content) }
      }

    /** Traverse to nodes where content does not match the regular expression `value`.
      */
    def contentNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.content != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.content).matches }
      }
    }

    /** Traverse to nodes where content does not match any of the regular expressions in `values`.
      */
    def contentNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.content).matches }.isEmpty }
    }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_ControlStructureBase[NodeType <: nodes.ControlStructureBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to controlStructureType property */
    def controlStructureType: Iterator[String] =
      traversal.map(_.controlStructureType)

    /** Traverse to nodes where the controlStructureType matches the regular expression `value`
      */
    def controlStructureType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        controlStructureTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.controlStructureType).matches }
      }

    /** Traverse to nodes where the controlStructureType matches at least one of the regular expressions in `values`
      */
    def controlStructureType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.controlStructureType).matches } }
    }

    /** Traverse to nodes where controlStructureType matches `value` exactly.
      */
    def controlStructureTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 15, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.controlStructureType == value }
    }

    /** Traverse to nodes where controlStructureType matches one of the elements in `values` exactly.
      */
    def controlStructureTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) controlStructureTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.controlStructureType) }
      }

    /** Traverse to nodes where controlStructureType does not match the regular expression `value`.
      */
    def controlStructureTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.controlStructureType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.controlStructureType).matches }
      }
    }

    /** Traverse to nodes where controlStructureType does not match any of the regular expressions in `values`.
      */
    def controlStructureTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.controlStructureType).matches }.isEmpty }
    }

    /** Traverse to parserTypeName property */
    def parserTypeName: Iterator[String] =
      traversal.map(_.parserTypeName)

    /** Traverse to nodes where the parserTypeName matches the regular expression `value`
      */
    def parserTypeName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        parserTypeNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.parserTypeName).matches }
      }

    /** Traverse to nodes where the parserTypeName matches at least one of the regular expressions in `values`
      */
    def parserTypeName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.parserTypeName).matches } }
    }

    /** Traverse to nodes where parserTypeName matches `value` exactly.
      */
    def parserTypeNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 46, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.parserTypeName == value }
    }

    /** Traverse to nodes where parserTypeName matches one of the elements in `values` exactly.
      */
    def parserTypeNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) parserTypeNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.parserTypeName) }
      }

    /** Traverse to nodes where parserTypeName does not match the regular expression `value`.
      */
    def parserTypeNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.parserTypeName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.parserTypeName).matches }
      }
    }

    /** Traverse to nodes where parserTypeName does not match any of the regular expressions in `values`.
      */
    def parserTypeNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.parserTypeName).matches }.isEmpty }
    }

  }
  final class Traversal_DependencyBase[NodeType <: nodes.DependencyBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to dependencyGroupId property */
    def dependencyGroupId: Iterator[String] =
      traversal.flatMap(_.dependencyGroupId)

    /** Traverse to nodes where the dependencyGroupId matches the regular expression `value`
      */
    def dependencyGroupId(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        dependencyGroupIdExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.dependencyGroupId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the dependencyGroupId matches at least one of the regular expressions in `values`
      */
    def dependencyGroupId(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.dependencyGroupId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where dependencyGroupId matches `value` exactly.
      */
    def dependencyGroupIdExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 16, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.dependencyGroupId; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where dependencyGroupId matches one of the elements in `values` exactly.
      */
    def dependencyGroupIdExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) dependencyGroupIdExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.dependencyGroupId; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where dependencyGroupId does not match the regular expression `value`.
      */
    def dependencyGroupIdNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.dependencyGroupId.isEmpty || node.dependencyGroupId.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.dependencyGroupId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where dependencyGroupId does not match any of the regular expressions in `values`.
      */
    def dependencyGroupIdNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.dependencyGroupId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to version property */
    def version: Iterator[String] =
      traversal.map(_.version)

    /** Traverse to nodes where the version matches the regular expression `value`
      */
    def version(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        versionExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.version).matches }
      }

    /** Traverse to nodes where the version matches at least one of the regular expressions in `values`
      */
    def version(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.version).matches } }
    }

    /** Traverse to nodes where version matches `value` exactly.
      */
    def versionExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 54, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.version == value }
    }

    /** Traverse to nodes where version matches one of the elements in `values` exactly.
      */
    def versionExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) versionExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.version) }
      }

    /** Traverse to nodes where version does not match the regular expression `value`.
      */
    def versionNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.version != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.version).matches }
      }
    }

    /** Traverse to nodes where version does not match any of the regular expressions in `values`.
      */
    def versionNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.version).matches }.isEmpty }
    }

  }
  final class Traversal_FieldIdentifierBase[NodeType <: nodes.FieldIdentifierBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to canonicalName property */
    def canonicalName: Iterator[String] =
      traversal.map(_.canonicalName)

    /** Traverse to nodes where the canonicalName matches the regular expression `value`
      */
    def canonicalName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        canonicalNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.canonicalName).matches }
      }

    /** Traverse to nodes where the canonicalName matches at least one of the regular expressions in `values`
      */
    def canonicalName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.canonicalName).matches } }
    }

    /** Traverse to nodes where canonicalName matches `value` exactly.
      */
    def canonicalNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 5, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.canonicalName == value }
    }

    /** Traverse to nodes where canonicalName matches one of the elements in `values` exactly.
      */
    def canonicalNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) canonicalNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.canonicalName) }
      }

    /** Traverse to nodes where canonicalName does not match the regular expression `value`.
      */
    def canonicalNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.canonicalName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.canonicalName).matches }
      }
    }

    /** Traverse to nodes where canonicalName does not match any of the regular expressions in `values`.
      */
    def canonicalNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.canonicalName).matches }.isEmpty }
    }

  }
  final class Traversal_FileBase[NodeType <: nodes.FileBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to content property */
    def content: Iterator[String] =
      traversal.map(_.content)

    /** Traverse to nodes where the content matches the regular expression `value`
      */
    def content(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        contentExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.content).matches }
      }

    /** Traverse to nodes where the content matches at least one of the regular expressions in `values`
      */
    def content(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.content).matches } }
    }

    /** Traverse to nodes where content matches `value` exactly.
      */
    def contentExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 14, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.content == value }
    }

    /** Traverse to nodes where content matches one of the elements in `values` exactly.
      */
    def contentExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) contentExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.content) }
      }

    /** Traverse to nodes where content does not match the regular expression `value`.
      */
    def contentNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.content != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.content).matches }
      }
    }

    /** Traverse to nodes where content does not match any of the regular expressions in `values`.
      */
    def contentNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.content).matches }.isEmpty }
    }

    /** Traverse to hash property */
    def hash: Iterator[String] =
      traversal.flatMap(_.hash)

    /** Traverse to nodes where the hash matches the regular expression `value`
      */
    def hash(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        hashExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.hash; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the hash matches at least one of the regular expressions in `values`
      */
    def hash(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.hash; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where hash matches `value` exactly.
      */
    def hashExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 23, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.hash; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where hash matches one of the elements in `values` exactly.
      */
    def hashExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) hashExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.hash; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where hash does not match the regular expression `value`.
      */
    def hashNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.hash.isEmpty || node.hash.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.hash; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where hash does not match any of the regular expressions in `values`.
      */
    def hashNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.hash; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_FindingBase[NodeType <: nodes.FindingBase](val traversal: Iterator[NodeType]) extends AnyVal {}
  final class Traversal_IdentifierBase[NodeType <: nodes.IdentifierBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_ImportBase[NodeType <: nodes.ImportBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to explicitAs property */
    def explicitAs: Iterator[Boolean] =
      traversal.flatMap(_.explicitAs)

    /** Traverse to nodes where the explicitAs equals the given `value`
      */
    def explicitAs(value: Boolean): Iterator[NodeType] =
      traversal.filter { node => node.explicitAs.isDefined && node.explicitAs.get == value }

    /** Traverse to importedAs property */
    def importedAs: Iterator[String] =
      traversal.flatMap(_.importedAs)

    /** Traverse to nodes where the importedAs matches the regular expression `value`
      */
    def importedAs(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        importedAsExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.importedAs; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the importedAs matches at least one of the regular expressions in `values`
      */
    def importedAs(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.importedAs; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where importedAs matches `value` exactly.
      */
    def importedAsExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 24, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.importedAs; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where importedAs matches one of the elements in `values` exactly.
      */
    def importedAsExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) importedAsExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.importedAs; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where importedAs does not match the regular expression `value`.
      */
    def importedAsNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.importedAs.isEmpty || node.importedAs.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.importedAs; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where importedAs does not match any of the regular expressions in `values`.
      */
    def importedAsNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.importedAs; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to importedEntity property */
    def importedEntity: Iterator[String] =
      traversal.flatMap(_.importedEntity)

    /** Traverse to nodes where the importedEntity matches the regular expression `value`
      */
    def importedEntity(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        importedEntityExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.importedEntity; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the importedEntity matches at least one of the regular expressions in `values`
      */
    def importedEntity(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.importedEntity; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where importedEntity matches `value` exactly.
      */
    def importedEntityExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 25, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.importedEntity; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where importedEntity matches one of the elements in `values` exactly.
      */
    def importedEntityExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) importedEntityExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.importedEntity; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where importedEntity does not match the regular expression `value`.
      */
    def importedEntityNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.importedEntity.isEmpty || node.importedEntity.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.importedEntity; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where importedEntity does not match any of the regular expressions in `values`.
      */
    def importedEntityNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.importedEntity; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to isExplicit property */
    def isExplicit: Iterator[Boolean] =
      traversal.flatMap(_.isExplicit)

    /** Traverse to nodes where the isExplicit equals the given `value`
      */
    def isExplicit(value: Boolean): Iterator[NodeType] =
      traversal.filter { node => node.isExplicit.isDefined && node.isExplicit.get == value }

    /** Traverse to isWildcard property */
    def isWildcard: Iterator[Boolean] =
      traversal.flatMap(_.isWildcard)

    /** Traverse to nodes where the isWildcard equals the given `value`
      */
    def isWildcard(value: Boolean): Iterator[NodeType] =
      traversal.filter { node => node.isWildcard.isDefined && node.isWildcard.get == value }

  }
  final class Traversal_JumpLabelBase[NodeType <: nodes.JumpLabelBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to parserTypeName property */
    def parserTypeName: Iterator[String] =
      traversal.map(_.parserTypeName)

    /** Traverse to nodes where the parserTypeName matches the regular expression `value`
      */
    def parserTypeName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        parserTypeNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.parserTypeName).matches }
      }

    /** Traverse to nodes where the parserTypeName matches at least one of the regular expressions in `values`
      */
    def parserTypeName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.parserTypeName).matches } }
    }

    /** Traverse to nodes where parserTypeName matches `value` exactly.
      */
    def parserTypeNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 46, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.parserTypeName == value }
    }

    /** Traverse to nodes where parserTypeName matches one of the elements in `values` exactly.
      */
    def parserTypeNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) parserTypeNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.parserTypeName) }
      }

    /** Traverse to nodes where parserTypeName does not match the regular expression `value`.
      */
    def parserTypeNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.parserTypeName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.parserTypeName).matches }
      }
    }

    /** Traverse to nodes where parserTypeName does not match any of the regular expressions in `values`.
      */
    def parserTypeNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.parserTypeName).matches }.isEmpty }
    }

  }
  final class Traversal_JumpTargetBase[NodeType <: nodes.JumpTargetBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to argumentIndex property */
    def argumentIndex: Iterator[Int] =
      traversal.map(_.argumentIndex)

    /** Traverse to nodes where the argumentIndex equals the given `value`
      */
    def argumentIndex(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex == value }

    /** Traverse to nodes where the argumentIndex equals at least one of the given `values`
      */
    def argumentIndex(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => vset.contains(node.argumentIndex) }
    }

    /** Traverse to nodes where the argumentIndex is not equal to the given `value`
      */
    def argumentIndexNot(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex != value }

    /** Traverse to nodes where the argumentIndex is not equal to any of the given `values`
      */
    def argumentIndexNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => !vset.contains(node.argumentIndex) }
    }

    /** Traverse to nodes where the argumentIndex is greater than the given `value`
      */
    def argumentIndexGt(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex > value }

    /** Traverse to nodes where the argumentIndex is greater than or equal the given `value`
      */
    def argumentIndexGte(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex >= value }

    /** Traverse to nodes where the argumentIndex is less than the given `value`
      */
    def argumentIndexLt(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex < value }

    /** Traverse to nodes where the argumentIndex is less than or equal the given `value`
      */
    def argumentIndexLte(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex <= value }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to parserTypeName property */
    def parserTypeName: Iterator[String] =
      traversal.map(_.parserTypeName)

    /** Traverse to nodes where the parserTypeName matches the regular expression `value`
      */
    def parserTypeName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        parserTypeNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.parserTypeName).matches }
      }

    /** Traverse to nodes where the parserTypeName matches at least one of the regular expressions in `values`
      */
    def parserTypeName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.parserTypeName).matches } }
    }

    /** Traverse to nodes where parserTypeName matches `value` exactly.
      */
    def parserTypeNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 46, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.parserTypeName == value }
    }

    /** Traverse to nodes where parserTypeName matches one of the elements in `values` exactly.
      */
    def parserTypeNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) parserTypeNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.parserTypeName) }
      }

    /** Traverse to nodes where parserTypeName does not match the regular expression `value`.
      */
    def parserTypeNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.parserTypeName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.parserTypeName).matches }
      }
    }

    /** Traverse to nodes where parserTypeName does not match any of the regular expressions in `values`.
      */
    def parserTypeNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.parserTypeName).matches }.isEmpty }
    }

  }
  final class Traversal_KeyValuePairBase[NodeType <: nodes.KeyValuePairBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to key property */
    def key: Iterator[String] =
      traversal.map(_.key)

    /** Traverse to nodes where the key matches the regular expression `value`
      */
    def key(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        keyExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.key).matches }
      }

    /** Traverse to nodes where the key matches at least one of the regular expressions in `values`
      */
    def key(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.key).matches } }
    }

    /** Traverse to nodes where key matches `value` exactly.
      */
    def keyExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 32, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.key == value }
    }

    /** Traverse to nodes where key matches one of the elements in `values` exactly.
      */
    def keyExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) keyExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.key) }
      }

    /** Traverse to nodes where key does not match the regular expression `value`.
      */
    def keyNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.key != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.key).matches }
      }
    }

    /** Traverse to nodes where key does not match any of the regular expressions in `values`.
      */
    def keyNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.key).matches }.isEmpty }
    }

    /** Traverse to value property */
    def value: Iterator[String] =
      traversal.map(_.value)

    /** Traverse to nodes where the value matches the regular expression `value`
      */
    def value(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        valueExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.value).matches }
      }

    /** Traverse to nodes where the value matches at least one of the regular expressions in `values`
      */
    def value(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.value).matches } }
    }

    /** Traverse to nodes where value matches `value` exactly.
      */
    def valueExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 53, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.value == value }
    }

    /** Traverse to nodes where value matches one of the elements in `values` exactly.
      */
    def valueExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) valueExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.value) }
      }

    /** Traverse to nodes where value does not match the regular expression `value`.
      */
    def valueNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.value != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.value).matches }
      }
    }

    /** Traverse to nodes where value does not match any of the regular expressions in `values`.
      */
    def valueNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.value).matches }.isEmpty }
    }

  }
  final class Traversal_LiteralBase[NodeType <: nodes.LiteralBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_LocalBase[NodeType <: nodes.LocalBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to closureBindingId property */
    def closureBindingId: Iterator[String] =
      traversal.flatMap(_.closureBindingId)

    /** Traverse to nodes where the closureBindingId matches the regular expression `value`
      */
    def closureBindingId(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        closureBindingIdExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.closureBindingId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the closureBindingId matches at least one of the regular expressions in `values`
      */
    def closureBindingId(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.closureBindingId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where closureBindingId matches `value` exactly.
      */
    def closureBindingIdExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 8, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.closureBindingId; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where closureBindingId matches one of the elements in `values` exactly.
      */
    def closureBindingIdExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) closureBindingIdExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.closureBindingId; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where closureBindingId does not match the regular expression `value`.
      */
    def closureBindingIdNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.closureBindingId.isEmpty || node.closureBindingId.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.closureBindingId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where closureBindingId does not match any of the regular expressions in `values`.
      */
    def closureBindingIdNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.closureBindingId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_LocationBase[NodeType <: nodes.LocationBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to className property */
    def className: Iterator[String] =
      traversal.map(_.className)

    /** Traverse to nodes where the className matches the regular expression `value`
      */
    def className(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        classNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.className).matches }
      }

    /** Traverse to nodes where the className matches at least one of the regular expressions in `values`
      */
    def className(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.className).matches } }
    }

    /** Traverse to nodes where className matches `value` exactly.
      */
    def classNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 6, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.className == value }
    }

    /** Traverse to nodes where className matches one of the elements in `values` exactly.
      */
    def classNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) classNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.className) }
      }

    /** Traverse to nodes where className does not match the regular expression `value`.
      */
    def classNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.className != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.className).matches }
      }
    }

    /** Traverse to nodes where className does not match any of the regular expressions in `values`.
      */
    def classNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.className).matches }.isEmpty }
    }

    /** Traverse to classShortName property */
    def classShortName: Iterator[String] =
      traversal.map(_.classShortName)

    /** Traverse to nodes where the classShortName matches the regular expression `value`
      */
    def classShortName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        classShortNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.classShortName).matches }
      }

    /** Traverse to nodes where the classShortName matches at least one of the regular expressions in `values`
      */
    def classShortName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.classShortName).matches } }
    }

    /** Traverse to nodes where classShortName matches `value` exactly.
      */
    def classShortNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 7, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.classShortName == value }
    }

    /** Traverse to nodes where classShortName matches one of the elements in `values` exactly.
      */
    def classShortNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) classShortNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.classShortName) }
      }

    /** Traverse to nodes where classShortName does not match the regular expression `value`.
      */
    def classShortNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.classShortName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.classShortName).matches }
      }
    }

    /** Traverse to nodes where classShortName does not match any of the regular expressions in `values`.
      */
    def classShortNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.classShortName).matches }.isEmpty }
    }

    /** Traverse to filename property */
    def filename: Iterator[String] =
      traversal.map(_.filename)

    /** Traverse to nodes where the filename matches the regular expression `value`
      */
    def filename(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        filenameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.filename).matches }
      }

    /** Traverse to nodes where the filename matches at least one of the regular expressions in `values`
      */
    def filename(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.filename).matches } }
    }

    /** Traverse to nodes where filename matches `value` exactly.
      */
    def filenameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 21, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.filename == value }
    }

    /** Traverse to nodes where filename matches one of the elements in `values` exactly.
      */
    def filenameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) filenameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.filename) }
      }

    /** Traverse to nodes where filename does not match the regular expression `value`.
      */
    def filenameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.filename != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.filename).matches }
      }
    }

    /** Traverse to nodes where filename does not match any of the regular expressions in `values`.
      */
    def filenameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.filename).matches }.isEmpty }
    }

    /** Traverse to lineNumber property */
    def lineNumber: Iterator[Int] =
      traversal.flatMap(_.lineNumber)

    /** Traverse to nodes where the lineNumber equals the given `value`
      */
    def lineNumber(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the lineNumber equals at least one of the given `values`
      */
    def lineNumber(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumber is not equal to the given `value`
      */
    def lineNumberNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the lineNumber does not equal any one of the given `values`
      */
    def lineNumberNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumber is greater than the given `value`
      */
    def lineNumberGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the lineNumber is greater than or equal the given `value`
      */
    def lineNumberGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the lineNumber is less than the given `value`
      */
    def lineNumberLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the lineNumber is less than or equal the given `value`
      */
    def lineNumberLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get <= value
      }

    /** Traverse to methodFullName property */
    def methodFullName: Iterator[String] =
      traversal.map(_.methodFullName)

    /** Traverse to nodes where the methodFullName matches the regular expression `value`
      */
    def methodFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        methodFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.methodFullName).matches }
      }

    /** Traverse to nodes where the methodFullName matches at least one of the regular expressions in `values`
      */
    def methodFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.methodFullName).matches } }
    }

    /** Traverse to nodes where methodFullName matches `value` exactly.
      */
    def methodFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 36, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.methodFullName == value }
    }

    /** Traverse to nodes where methodFullName matches one of the elements in `values` exactly.
      */
    def methodFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) methodFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.methodFullName) }
      }

    /** Traverse to nodes where methodFullName does not match the regular expression `value`.
      */
    def methodFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.methodFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.methodFullName).matches }
      }
    }

    /** Traverse to nodes where methodFullName does not match any of the regular expressions in `values`.
      */
    def methodFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.methodFullName).matches }.isEmpty }
    }

    /** Traverse to methodShortName property */
    def methodShortName: Iterator[String] =
      traversal.map(_.methodShortName)

    /** Traverse to nodes where the methodShortName matches the regular expression `value`
      */
    def methodShortName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        methodShortNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.methodShortName).matches }
      }

    /** Traverse to nodes where the methodShortName matches at least one of the regular expressions in `values`
      */
    def methodShortName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.methodShortName).matches } }
    }

    /** Traverse to nodes where methodShortName matches `value` exactly.
      */
    def methodShortNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 37, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.methodShortName == value }
    }

    /** Traverse to nodes where methodShortName matches one of the elements in `values` exactly.
      */
    def methodShortNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) methodShortNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.methodShortName) }
      }

    /** Traverse to nodes where methodShortName does not match the regular expression `value`.
      */
    def methodShortNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.methodShortName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.methodShortName).matches }
      }
    }

    /** Traverse to nodes where methodShortName does not match any of the regular expressions in `values`.
      */
    def methodShortNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.methodShortName).matches }.isEmpty }
    }

    /** Traverse to nodeLabel property */
    def nodeLabel: Iterator[String] =
      traversal.map(_.nodeLabel)

    /** Traverse to nodes where the nodeLabel matches the regular expression `value`
      */
    def nodeLabel(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nodeLabelExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.nodeLabel).matches }
      }

    /** Traverse to nodes where the nodeLabel matches at least one of the regular expressions in `values`
      */
    def nodeLabel(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.nodeLabel).matches } }
    }

    /** Traverse to nodes where nodeLabel matches `value` exactly.
      */
    def nodeLabelExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 40, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.nodeLabel == value }
    }

    /** Traverse to nodes where nodeLabel matches one of the elements in `values` exactly.
      */
    def nodeLabelExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nodeLabelExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.nodeLabel) }
      }

    /** Traverse to nodes where nodeLabel does not match the regular expression `value`.
      */
    def nodeLabelNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.nodeLabel != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.nodeLabel).matches }
      }
    }

    /** Traverse to nodes where nodeLabel does not match any of the regular expressions in `values`.
      */
    def nodeLabelNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.nodeLabel).matches }.isEmpty }
    }

    /** Traverse to packageName property */
    def packageName: Iterator[String] =
      traversal.map(_.packageName)

    /** Traverse to nodes where the packageName matches the regular expression `value`
      */
    def packageName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        packageNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.packageName).matches }
      }

    /** Traverse to nodes where the packageName matches at least one of the regular expressions in `values`
      */
    def packageName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.packageName).matches } }
    }

    /** Traverse to nodes where packageName matches `value` exactly.
      */
    def packageNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 45, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.packageName == value }
    }

    /** Traverse to nodes where packageName matches one of the elements in `values` exactly.
      */
    def packageNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) packageNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.packageName) }
      }

    /** Traverse to nodes where packageName does not match the regular expression `value`.
      */
    def packageNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.packageName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.packageName).matches }
      }
    }

    /** Traverse to nodes where packageName does not match any of the regular expressions in `values`.
      */
    def packageNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.packageName).matches }.isEmpty }
    }

    /** Traverse to symbol property */
    def symbol: Iterator[String] =
      traversal.map(_.symbol)

    /** Traverse to nodes where the symbol matches the regular expression `value`
      */
    def symbol(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        symbolExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.symbol).matches }
      }

    /** Traverse to nodes where the symbol matches at least one of the regular expressions in `values`
      */
    def symbol(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.symbol).matches } }
    }

    /** Traverse to nodes where symbol matches `value` exactly.
      */
    def symbolExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 50, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.symbol == value }
    }

    /** Traverse to nodes where symbol matches one of the elements in `values` exactly.
      */
    def symbolExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) symbolExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.symbol) }
      }

    /** Traverse to nodes where symbol does not match the regular expression `value`.
      */
    def symbolNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.symbol != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.symbol).matches }
      }
    }

    /** Traverse to nodes where symbol does not match any of the regular expressions in `values`.
      */
    def symbolNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.symbol).matches }.isEmpty }
    }

  }
  final class Traversal_MemberBase[NodeType <: nodes.MemberBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to astParentFullName property */
    def astParentFullName: Iterator[String] =
      traversal.map(_.astParentFullName)

    /** Traverse to nodes where the astParentFullName matches the regular expression `value`
      */
    def astParentFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        astParentFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.astParentFullName).matches }
      }

    /** Traverse to nodes where the astParentFullName matches at least one of the regular expressions in `values`
      */
    def astParentFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.astParentFullName).matches } }
    }

    /** Traverse to nodes where astParentFullName matches `value` exactly.
      */
    def astParentFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 3, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.astParentFullName == value }
    }

    /** Traverse to nodes where astParentFullName matches one of the elements in `values` exactly.
      */
    def astParentFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) astParentFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.astParentFullName) }
      }

    /** Traverse to nodes where astParentFullName does not match the regular expression `value`.
      */
    def astParentFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.astParentFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.astParentFullName).matches }
      }
    }

    /** Traverse to nodes where astParentFullName does not match any of the regular expressions in `values`.
      */
    def astParentFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.astParentFullName).matches }.isEmpty }
    }

    /** Traverse to astParentType property */
    def astParentType: Iterator[String] =
      traversal.map(_.astParentType)

    /** Traverse to nodes where the astParentType matches the regular expression `value`
      */
    def astParentType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        astParentTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.astParentType).matches }
      }

    /** Traverse to nodes where the astParentType matches at least one of the regular expressions in `values`
      */
    def astParentType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.astParentType).matches } }
    }

    /** Traverse to nodes where astParentType matches `value` exactly.
      */
    def astParentTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 4, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.astParentType == value }
    }

    /** Traverse to nodes where astParentType matches one of the elements in `values` exactly.
      */
    def astParentTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) astParentTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.astParentType) }
      }

    /** Traverse to nodes where astParentType does not match the regular expression `value`.
      */
    def astParentTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.astParentType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.astParentType).matches }
      }
    }

    /** Traverse to nodes where astParentType does not match any of the regular expressions in `values`.
      */
    def astParentTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.astParentType).matches }.isEmpty }
    }

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_MetaDataBase[NodeType <: nodes.MetaDataBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to hash property */
    def hash: Iterator[String] =
      traversal.flatMap(_.hash)

    /** Traverse to nodes where the hash matches the regular expression `value`
      */
    def hash(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        hashExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.hash; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the hash matches at least one of the regular expressions in `values`
      */
    def hash(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.hash; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where hash matches `value` exactly.
      */
    def hashExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 23, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.hash; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where hash matches one of the elements in `values` exactly.
      */
    def hashExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) hashExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.hash; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where hash does not match the regular expression `value`.
      */
    def hashNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.hash.isEmpty || node.hash.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.hash; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where hash does not match any of the regular expressions in `values`.
      */
    def hashNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.hash; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to language property */
    def language: Iterator[String] =
      traversal.map(_.language)

    /** Traverse to nodes where the language matches the regular expression `value`
      */
    def language(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        languageExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.language).matches }
      }

    /** Traverse to nodes where the language matches at least one of the regular expressions in `values`
      */
    def language(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.language).matches } }
    }

    /** Traverse to nodes where language matches `value` exactly.
      */
    def languageExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 33, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.language == value }
    }

    /** Traverse to nodes where language matches one of the elements in `values` exactly.
      */
    def languageExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) languageExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.language) }
      }

    /** Traverse to nodes where language does not match the regular expression `value`.
      */
    def languageNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.language != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.language).matches }
      }
    }

    /** Traverse to nodes where language does not match any of the regular expressions in `values`.
      */
    def languageNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.language).matches }.isEmpty }
    }

    /** Traverse to overlays property */
    def overlays: Iterator[String] =
      traversal.flatMap(_.overlays)

    /** Traverse to root property */
    def root: Iterator[String] =
      traversal.map(_.root)

    /** Traverse to nodes where the root matches the regular expression `value`
      */
    def root(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        rootExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.root).matches }
      }

    /** Traverse to nodes where the root matches at least one of the regular expressions in `values`
      */
    def root(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.root).matches } }
    }

    /** Traverse to nodes where root matches `value` exactly.
      */
    def rootExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 48, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.root == value }
    }

    /** Traverse to nodes where root matches one of the elements in `values` exactly.
      */
    def rootExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) rootExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.root) }
      }

    /** Traverse to nodes where root does not match the regular expression `value`.
      */
    def rootNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.root != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.root).matches }
      }
    }

    /** Traverse to nodes where root does not match any of the regular expressions in `values`.
      */
    def rootNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.root).matches }.isEmpty }
    }

    /** Traverse to version property */
    def version: Iterator[String] =
      traversal.map(_.version)

    /** Traverse to nodes where the version matches the regular expression `value`
      */
    def version(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        versionExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.version).matches }
      }

    /** Traverse to nodes where the version matches at least one of the regular expressions in `values`
      */
    def version(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.version).matches } }
    }

    /** Traverse to nodes where version matches `value` exactly.
      */
    def versionExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 54, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.version == value }
    }

    /** Traverse to nodes where version matches one of the elements in `values` exactly.
      */
    def versionExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) versionExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.version) }
      }

    /** Traverse to nodes where version does not match the regular expression `value`.
      */
    def versionNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.version != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.version).matches }
      }
    }

    /** Traverse to nodes where version does not match any of the regular expressions in `values`.
      */
    def versionNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.version).matches }.isEmpty }
    }

  }
  final class Traversal_MethodBase[NodeType <: nodes.MethodBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to astParentFullName property */
    def astParentFullName: Iterator[String] =
      traversal.map(_.astParentFullName)

    /** Traverse to nodes where the astParentFullName matches the regular expression `value`
      */
    def astParentFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        astParentFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.astParentFullName).matches }
      }

    /** Traverse to nodes where the astParentFullName matches at least one of the regular expressions in `values`
      */
    def astParentFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.astParentFullName).matches } }
    }

    /** Traverse to nodes where astParentFullName matches `value` exactly.
      */
    def astParentFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 3, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.astParentFullName == value }
    }

    /** Traverse to nodes where astParentFullName matches one of the elements in `values` exactly.
      */
    def astParentFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) astParentFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.astParentFullName) }
      }

    /** Traverse to nodes where astParentFullName does not match the regular expression `value`.
      */
    def astParentFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.astParentFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.astParentFullName).matches }
      }
    }

    /** Traverse to nodes where astParentFullName does not match any of the regular expressions in `values`.
      */
    def astParentFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.astParentFullName).matches }.isEmpty }
    }

    /** Traverse to astParentType property */
    def astParentType: Iterator[String] =
      traversal.map(_.astParentType)

    /** Traverse to nodes where the astParentType matches the regular expression `value`
      */
    def astParentType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        astParentTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.astParentType).matches }
      }

    /** Traverse to nodes where the astParentType matches at least one of the regular expressions in `values`
      */
    def astParentType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.astParentType).matches } }
    }

    /** Traverse to nodes where astParentType matches `value` exactly.
      */
    def astParentTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 4, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.astParentType == value }
    }

    /** Traverse to nodes where astParentType matches one of the elements in `values` exactly.
      */
    def astParentTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) astParentTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.astParentType) }
      }

    /** Traverse to nodes where astParentType does not match the regular expression `value`.
      */
    def astParentTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.astParentType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.astParentType).matches }
      }
    }

    /** Traverse to nodes where astParentType does not match any of the regular expressions in `values`.
      */
    def astParentTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.astParentType).matches }.isEmpty }
    }

    /** Traverse to columnNumberEnd property */
    def columnNumberEnd: Iterator[Int] =
      traversal.flatMap(_.columnNumberEnd)

    /** Traverse to nodes where the columnNumberEnd equals the given `value`
      */
    def columnNumberEnd(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the columnNumberEnd equals at least one of the given `values`
      */
    def columnNumberEnd(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the columnNumberEnd is not equal to the given `value`
      */
    def columnNumberEndNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the columnNumberEnd does not equal any one of the given `values`
      */
    def columnNumberEndNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the columnNumberEnd is greater than the given `value`
      */
    def columnNumberEndGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the columnNumberEnd is greater than or equal the given `value`
      */
    def columnNumberEndGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the columnNumberEnd is less than the given `value`
      */
    def columnNumberEndLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the columnNumberEnd is less than or equal the given `value`
      */
    def columnNumberEndLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get <= value
      }

    /** Traverse to filename property */
    def filename: Iterator[String] =
      traversal.map(_.filename)

    /** Traverse to nodes where the filename matches the regular expression `value`
      */
    def filename(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        filenameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.filename).matches }
      }

    /** Traverse to nodes where the filename matches at least one of the regular expressions in `values`
      */
    def filename(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.filename).matches } }
    }

    /** Traverse to nodes where filename matches `value` exactly.
      */
    def filenameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 21, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.filename == value }
    }

    /** Traverse to nodes where filename matches one of the elements in `values` exactly.
      */
    def filenameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) filenameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.filename) }
      }

    /** Traverse to nodes where filename does not match the regular expression `value`.
      */
    def filenameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.filename != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.filename).matches }
      }
    }

    /** Traverse to nodes where filename does not match any of the regular expressions in `values`.
      */
    def filenameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.filename).matches }.isEmpty }
    }

    /** Traverse to fullName property */
    def fullName: Iterator[String] =
      traversal.map(_.fullName)

    /** Traverse to nodes where the fullName matches the regular expression `value`
      */
    def fullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        fullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.fullName).matches }
      }

    /** Traverse to nodes where the fullName matches at least one of the regular expressions in `values`
      */
    def fullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.fullName).matches } }
    }

    /** Traverse to nodes where fullName matches `value` exactly.
      */
    def fullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 22, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.fullName == value }
    }

    /** Traverse to nodes where fullName matches one of the elements in `values` exactly.
      */
    def fullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) fullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.fullName) }
      }

    /** Traverse to nodes where fullName does not match the regular expression `value`.
      */
    def fullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.fullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.fullName).matches }
      }
    }

    /** Traverse to nodes where fullName does not match any of the regular expressions in `values`.
      */
    def fullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.fullName).matches }.isEmpty }
    }

    /** Traverse to hash property */
    def hash: Iterator[String] =
      traversal.flatMap(_.hash)

    /** Traverse to nodes where the hash matches the regular expression `value`
      */
    def hash(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        hashExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.hash; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the hash matches at least one of the regular expressions in `values`
      */
    def hash(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.hash; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where hash matches `value` exactly.
      */
    def hashExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 23, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.hash; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where hash matches one of the elements in `values` exactly.
      */
    def hashExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) hashExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.hash; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where hash does not match the regular expression `value`.
      */
    def hashNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.hash.isEmpty || node.hash.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.hash; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where hash does not match any of the regular expressions in `values`.
      */
    def hashNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.hash; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to isExternal property */
    def isExternal: Iterator[Boolean] =
      traversal.map(_.isExternal)

    /** Traverse to nodes where the isExternal equals the given `value`
      */
    def isExternal(value: Boolean): Iterator[NodeType] =
      traversal.filter { _.isExternal == value }

    /** Traverse to lineNumberEnd property */
    def lineNumberEnd: Iterator[Int] =
      traversal.flatMap(_.lineNumberEnd)

    /** Traverse to nodes where the lineNumberEnd equals the given `value`
      */
    def lineNumberEnd(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the lineNumberEnd equals at least one of the given `values`
      */
    def lineNumberEnd(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumberEnd is not equal to the given `value`
      */
    def lineNumberEndNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the lineNumberEnd does not equal any one of the given `values`
      */
    def lineNumberEndNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumberEnd is greater than the given `value`
      */
    def lineNumberEndGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the lineNumberEnd is greater than or equal the given `value`
      */
    def lineNumberEndGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the lineNumberEnd is less than the given `value`
      */
    def lineNumberEndLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the lineNumberEnd is less than or equal the given `value`
      */
    def lineNumberEndLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get <= value
      }

    /** Traverse to offset property */
    def offset: Iterator[Int] =
      traversal.flatMap(_.offset)

    /** Traverse to nodes where the offset equals the given `value`
      */
    def offset(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the offset equals at least one of the given `values`
      */
    def offset(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offset is not equal to the given `value`
      */
    def offsetNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the offset does not equal any one of the given `values`
      */
    def offsetNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offset; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offset is greater than the given `value`
      */
    def offsetGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the offset is greater than or equal the given `value`
      */
    def offsetGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the offset is less than the given `value`
      */
    def offsetLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the offset is less than or equal the given `value`
      */
    def offsetLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get <= value
      }

    /** Traverse to offsetEnd property */
    def offsetEnd: Iterator[Int] =
      traversal.flatMap(_.offsetEnd)

    /** Traverse to nodes where the offsetEnd equals the given `value`
      */
    def offsetEnd(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the offsetEnd equals at least one of the given `values`
      */
    def offsetEnd(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offsetEnd is not equal to the given `value`
      */
    def offsetEndNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the offsetEnd does not equal any one of the given `values`
      */
    def offsetEndNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offsetEnd is greater than the given `value`
      */
    def offsetEndGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the offsetEnd is greater than or equal the given `value`
      */
    def offsetEndGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the offsetEnd is less than the given `value`
      */
    def offsetEndLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the offsetEnd is less than or equal the given `value`
      */
    def offsetEndLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get <= value
      }

    /** Traverse to signature property */
    def signature: Iterator[String] =
      traversal.map(_.signature)

    /** Traverse to nodes where the signature matches the regular expression `value`
      */
    def signature(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        signatureExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.signature).matches }
      }

    /** Traverse to nodes where the signature matches at least one of the regular expressions in `values`
      */
    def signature(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.signature).matches } }
    }

    /** Traverse to nodes where signature matches `value` exactly.
      */
    def signatureExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 49, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.signature == value }
    }

    /** Traverse to nodes where signature matches one of the elements in `values` exactly.
      */
    def signatureExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) signatureExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.signature) }
      }

    /** Traverse to nodes where signature does not match the regular expression `value`.
      */
    def signatureNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.signature != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.signature).matches }
      }
    }

    /** Traverse to nodes where signature does not match any of the regular expressions in `values`.
      */
    def signatureNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.signature).matches }.isEmpty }
    }

  }
  final class Traversal_MethodParameterInBase[NodeType <: nodes.MethodParameterInBase](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to closureBindingId property */
    def closureBindingId: Iterator[String] =
      traversal.flatMap(_.closureBindingId)

    /** Traverse to nodes where the closureBindingId matches the regular expression `value`
      */
    def closureBindingId(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        closureBindingIdExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.closureBindingId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the closureBindingId matches at least one of the regular expressions in `values`
      */
    def closureBindingId(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.closureBindingId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where closureBindingId matches `value` exactly.
      */
    def closureBindingIdExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 8, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.closureBindingId; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where closureBindingId matches one of the elements in `values` exactly.
      */
    def closureBindingIdExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) closureBindingIdExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.closureBindingId; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where closureBindingId does not match the regular expression `value`.
      */
    def closureBindingIdNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.closureBindingId.isEmpty || node.closureBindingId.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.closureBindingId; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where closureBindingId does not match any of the regular expressions in `values`.
      */
    def closureBindingIdNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.closureBindingId; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to evaluationStrategy property */
    def evaluationStrategy: Iterator[String] =
      traversal.map(_.evaluationStrategy)

    /** Traverse to nodes where the evaluationStrategy matches the regular expression `value`
      */
    def evaluationStrategy(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        evaluationStrategyExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.evaluationStrategy).matches }
      }

    /** Traverse to nodes where the evaluationStrategy matches at least one of the regular expressions in `values`
      */
    def evaluationStrategy(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.evaluationStrategy).matches } }
    }

    /** Traverse to nodes where evaluationStrategy matches `value` exactly.
      */
    def evaluationStrategyExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 19, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.evaluationStrategy == value }
    }

    /** Traverse to nodes where evaluationStrategy matches one of the elements in `values` exactly.
      */
    def evaluationStrategyExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) evaluationStrategyExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.evaluationStrategy) }
      }

    /** Traverse to nodes where evaluationStrategy does not match the regular expression `value`.
      */
    def evaluationStrategyNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.evaluationStrategy != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.evaluationStrategy).matches }
      }
    }

    /** Traverse to nodes where evaluationStrategy does not match any of the regular expressions in `values`.
      */
    def evaluationStrategyNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.evaluationStrategy).matches }.isEmpty }
    }

    /** Traverse to index property */
    def index: Iterator[Int] =
      traversal.map(_.index)

    /** Traverse to nodes where the index equals the given `value`
      */
    def index(value: Int): Iterator[NodeType] =
      traversal.filter { _.index == value }

    /** Traverse to nodes where the index equals at least one of the given `values`
      */
    def index(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => vset.contains(node.index) }
    }

    /** Traverse to nodes where the index is not equal to the given `value`
      */
    def indexNot(value: Int): Iterator[NodeType] =
      traversal.filter { _.index != value }

    /** Traverse to nodes where the index is not equal to any of the given `values`
      */
    def indexNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => !vset.contains(node.index) }
    }

    /** Traverse to nodes where the index is greater than the given `value`
      */
    def indexGt(value: Int): Iterator[NodeType] =
      traversal.filter { _.index > value }

    /** Traverse to nodes where the index is greater than or equal the given `value`
      */
    def indexGte(value: Int): Iterator[NodeType] =
      traversal.filter { _.index >= value }

    /** Traverse to nodes where the index is less than the given `value`
      */
    def indexLt(value: Int): Iterator[NodeType] =
      traversal.filter { _.index < value }

    /** Traverse to nodes where the index is less than or equal the given `value`
      */
    def indexLte(value: Int): Iterator[NodeType] =
      traversal.filter { _.index <= value }

    /** Traverse to isVariadic property */
    def isVariadic: Iterator[Boolean] =
      traversal.map(_.isVariadic)

    /** Traverse to nodes where the isVariadic equals the given `value`
      */
    def isVariadic(value: Boolean): Iterator[NodeType] =
      traversal.filter { _.isVariadic == value }

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_MethodParameterOutBase[NodeType <: nodes.MethodParameterOutBase](
    val traversal: Iterator[NodeType]
  ) extends AnyVal {

    /** Traverse to evaluationStrategy property */
    def evaluationStrategy: Iterator[String] =
      traversal.map(_.evaluationStrategy)

    /** Traverse to nodes where the evaluationStrategy matches the regular expression `value`
      */
    def evaluationStrategy(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        evaluationStrategyExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.evaluationStrategy).matches }
      }

    /** Traverse to nodes where the evaluationStrategy matches at least one of the regular expressions in `values`
      */
    def evaluationStrategy(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.evaluationStrategy).matches } }
    }

    /** Traverse to nodes where evaluationStrategy matches `value` exactly.
      */
    def evaluationStrategyExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 19, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.evaluationStrategy == value }
    }

    /** Traverse to nodes where evaluationStrategy matches one of the elements in `values` exactly.
      */
    def evaluationStrategyExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) evaluationStrategyExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.evaluationStrategy) }
      }

    /** Traverse to nodes where evaluationStrategy does not match the regular expression `value`.
      */
    def evaluationStrategyNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.evaluationStrategy != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.evaluationStrategy).matches }
      }
    }

    /** Traverse to nodes where evaluationStrategy does not match any of the regular expressions in `values`.
      */
    def evaluationStrategyNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.evaluationStrategy).matches }.isEmpty }
    }

    /** Traverse to index property */
    def index: Iterator[Int] =
      traversal.map(_.index)

    /** Traverse to nodes where the index equals the given `value`
      */
    def index(value: Int): Iterator[NodeType] =
      traversal.filter { _.index == value }

    /** Traverse to nodes where the index equals at least one of the given `values`
      */
    def index(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => vset.contains(node.index) }
    }

    /** Traverse to nodes where the index is not equal to the given `value`
      */
    def indexNot(value: Int): Iterator[NodeType] =
      traversal.filter { _.index != value }

    /** Traverse to nodes where the index is not equal to any of the given `values`
      */
    def indexNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => !vset.contains(node.index) }
    }

    /** Traverse to nodes where the index is greater than the given `value`
      */
    def indexGt(value: Int): Iterator[NodeType] =
      traversal.filter { _.index > value }

    /** Traverse to nodes where the index is greater than or equal the given `value`
      */
    def indexGte(value: Int): Iterator[NodeType] =
      traversal.filter { _.index >= value }

    /** Traverse to nodes where the index is less than the given `value`
      */
    def indexLt(value: Int): Iterator[NodeType] =
      traversal.filter { _.index < value }

    /** Traverse to nodes where the index is less than or equal the given `value`
      */
    def indexLte(value: Int): Iterator[NodeType] =
      traversal.filter { _.index <= value }

    /** Traverse to isVariadic property */
    def isVariadic: Iterator[Boolean] =
      traversal.map(_.isVariadic)

    /** Traverse to nodes where the isVariadic equals the given `value`
      */
    def isVariadic(value: Boolean): Iterator[NodeType] =
      traversal.filter { _.isVariadic == value }

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_MethodRefBase[NodeType <: nodes.MethodRefBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to methodFullName property */
    def methodFullName: Iterator[String] =
      traversal.map(_.methodFullName)

    /** Traverse to nodes where the methodFullName matches the regular expression `value`
      */
    def methodFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        methodFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.methodFullName).matches }
      }

    /** Traverse to nodes where the methodFullName matches at least one of the regular expressions in `values`
      */
    def methodFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.methodFullName).matches } }
    }

    /** Traverse to nodes where methodFullName matches `value` exactly.
      */
    def methodFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 36, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.methodFullName == value }
    }

    /** Traverse to nodes where methodFullName matches one of the elements in `values` exactly.
      */
    def methodFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) methodFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.methodFullName) }
      }

    /** Traverse to nodes where methodFullName does not match the regular expression `value`.
      */
    def methodFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.methodFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.methodFullName).matches }
      }
    }

    /** Traverse to nodes where methodFullName does not match any of the regular expressions in `values`.
      */
    def methodFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.methodFullName).matches }.isEmpty }
    }

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_MethodReturnBase[NodeType <: nodes.MethodReturnBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to evaluationStrategy property */
    def evaluationStrategy: Iterator[String] =
      traversal.map(_.evaluationStrategy)

    /** Traverse to nodes where the evaluationStrategy matches the regular expression `value`
      */
    def evaluationStrategy(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        evaluationStrategyExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.evaluationStrategy).matches }
      }

    /** Traverse to nodes where the evaluationStrategy matches at least one of the regular expressions in `values`
      */
    def evaluationStrategy(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.evaluationStrategy).matches } }
    }

    /** Traverse to nodes where evaluationStrategy matches `value` exactly.
      */
    def evaluationStrategyExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 19, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.evaluationStrategy == value }
    }

    /** Traverse to nodes where evaluationStrategy matches one of the elements in `values` exactly.
      */
    def evaluationStrategyExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) evaluationStrategyExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.evaluationStrategy) }
      }

    /** Traverse to nodes where evaluationStrategy does not match the regular expression `value`.
      */
    def evaluationStrategyNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.evaluationStrategy != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.evaluationStrategy).matches }
      }
    }

    /** Traverse to nodes where evaluationStrategy does not match any of the regular expressions in `values`.
      */
    def evaluationStrategyNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.evaluationStrategy).matches }.isEmpty }
    }

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_ModifierBase[NodeType <: nodes.ModifierBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to modifierType property */
    def modifierType: Iterator[String] =
      traversal.map(_.modifierType)

    /** Traverse to nodes where the modifierType matches the regular expression `value`
      */
    def modifierType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        modifierTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.modifierType).matches }
      }

    /** Traverse to nodes where the modifierType matches at least one of the regular expressions in `values`
      */
    def modifierType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.modifierType).matches } }
    }

    /** Traverse to nodes where modifierType matches `value` exactly.
      */
    def modifierTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 38, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.modifierType == value }
    }

    /** Traverse to nodes where modifierType matches one of the elements in `values` exactly.
      */
    def modifierTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) modifierTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.modifierType) }
      }

    /** Traverse to nodes where modifierType does not match the regular expression `value`.
      */
    def modifierTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.modifierType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.modifierType).matches }
      }
    }

    /** Traverse to nodes where modifierType does not match any of the regular expressions in `values`.
      */
    def modifierTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.modifierType).matches }.isEmpty }
    }

  }
  final class Traversal_NamespaceBase[NodeType <: nodes.NamespaceBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_NamespaceBlockBase[NodeType <: nodes.NamespaceBlockBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to filename property */
    def filename: Iterator[String] =
      traversal.map(_.filename)

    /** Traverse to nodes where the filename matches the regular expression `value`
      */
    def filename(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        filenameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.filename).matches }
      }

    /** Traverse to nodes where the filename matches at least one of the regular expressions in `values`
      */
    def filename(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.filename).matches } }
    }

    /** Traverse to nodes where filename matches `value` exactly.
      */
    def filenameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 21, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.filename == value }
    }

    /** Traverse to nodes where filename matches one of the elements in `values` exactly.
      */
    def filenameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) filenameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.filename) }
      }

    /** Traverse to nodes where filename does not match the regular expression `value`.
      */
    def filenameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.filename != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.filename).matches }
      }
    }

    /** Traverse to nodes where filename does not match any of the regular expressions in `values`.
      */
    def filenameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.filename).matches }.isEmpty }
    }

    /** Traverse to fullName property */
    def fullName: Iterator[String] =
      traversal.map(_.fullName)

    /** Traverse to nodes where the fullName matches the regular expression `value`
      */
    def fullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        fullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.fullName).matches }
      }

    /** Traverse to nodes where the fullName matches at least one of the regular expressions in `values`
      */
    def fullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.fullName).matches } }
    }

    /** Traverse to nodes where fullName matches `value` exactly.
      */
    def fullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 22, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.fullName == value }
    }

    /** Traverse to nodes where fullName matches one of the elements in `values` exactly.
      */
    def fullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) fullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.fullName) }
      }

    /** Traverse to nodes where fullName does not match the regular expression `value`.
      */
    def fullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.fullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.fullName).matches }
      }
    }

    /** Traverse to nodes where fullName does not match any of the regular expressions in `values`.
      */
    def fullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.fullName).matches }.isEmpty }
    }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_ReturnBase[NodeType <: nodes.ReturnBase](val traversal: Iterator[NodeType]) extends AnyVal {}
  final class Traversal_TagBase[NodeType <: nodes.TagBase](val traversal: Iterator[NodeType])       extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to value property */
    def value: Iterator[String] =
      traversal.map(_.value)

    /** Traverse to nodes where the value matches the regular expression `value`
      */
    def value(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        valueExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.value).matches }
      }

    /** Traverse to nodes where the value matches at least one of the regular expressions in `values`
      */
    def value(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.value).matches } }
    }

    /** Traverse to nodes where value matches `value` exactly.
      */
    def valueExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 53, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.value == value }
    }

    /** Traverse to nodes where value matches one of the elements in `values` exactly.
      */
    def valueExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) valueExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.value) }
      }

    /** Traverse to nodes where value does not match the regular expression `value`.
      */
    def valueNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.value != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.value).matches }
      }
    }

    /** Traverse to nodes where value does not match any of the regular expressions in `values`.
      */
    def valueNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.value).matches }.isEmpty }
    }

  }
  final class Traversal_TagNodePairBase[NodeType <: nodes.TagNodePairBase](val traversal: Iterator[NodeType])
      extends AnyVal {}
  final class Traversal_TemplateDomBase[NodeType <: nodes.TemplateDomBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_TypeBase[NodeType <: nodes.TypeBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to fullName property */
    def fullName: Iterator[String] =
      traversal.map(_.fullName)

    /** Traverse to nodes where the fullName matches the regular expression `value`
      */
    def fullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        fullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.fullName).matches }
      }

    /** Traverse to nodes where the fullName matches at least one of the regular expressions in `values`
      */
    def fullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.fullName).matches } }
    }

    /** Traverse to nodes where fullName matches `value` exactly.
      */
    def fullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 22, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.fullName == value }
    }

    /** Traverse to nodes where fullName matches one of the elements in `values` exactly.
      */
    def fullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) fullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.fullName) }
      }

    /** Traverse to nodes where fullName does not match the regular expression `value`.
      */
    def fullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.fullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.fullName).matches }
      }
    }

    /** Traverse to nodes where fullName does not match any of the regular expressions in `values`.
      */
    def fullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.fullName).matches }.isEmpty }
    }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to typeDeclFullName property */
    def typeDeclFullName: Iterator[String] =
      traversal.map(_.typeDeclFullName)

    /** Traverse to nodes where the typeDeclFullName matches the regular expression `value`
      */
    def typeDeclFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeDeclFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeDeclFullName).matches }
      }

    /** Traverse to nodes where the typeDeclFullName matches at least one of the regular expressions in `values`
      */
    def typeDeclFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeDeclFullName).matches } }
    }

    /** Traverse to nodes where typeDeclFullName matches `value` exactly.
      */
    def typeDeclFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 51, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeDeclFullName == value }
    }

    /** Traverse to nodes where typeDeclFullName matches one of the elements in `values` exactly.
      */
    def typeDeclFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeDeclFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeDeclFullName) }
      }

    /** Traverse to nodes where typeDeclFullName does not match the regular expression `value`.
      */
    def typeDeclFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeDeclFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeDeclFullName).matches }
      }
    }

    /** Traverse to nodes where typeDeclFullName does not match any of the regular expressions in `values`.
      */
    def typeDeclFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeDeclFullName).matches }.isEmpty }
    }

  }
  final class Traversal_TypeArgumentBase[NodeType <: nodes.TypeArgumentBase](val traversal: Iterator[NodeType])
      extends AnyVal {}
  final class Traversal_TypeDeclBase[NodeType <: nodes.TypeDeclBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to aliasTypeFullName property */
    def aliasTypeFullName: Iterator[String] =
      traversal.flatMap(_.aliasTypeFullName)

    /** Traverse to nodes where the aliasTypeFullName matches the regular expression `value`
      */
    def aliasTypeFullName(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        aliasTypeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.aliasTypeFullName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the aliasTypeFullName matches at least one of the regular expressions in `values`
      */
    def aliasTypeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.aliasTypeFullName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where aliasTypeFullName matches `value` exactly.
      */
    def aliasTypeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 0, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.aliasTypeFullName; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where aliasTypeFullName matches one of the elements in `values` exactly.
      */
    def aliasTypeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) aliasTypeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.aliasTypeFullName; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where aliasTypeFullName does not match the regular expression `value`.
      */
    def aliasTypeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.aliasTypeFullName.isEmpty || node.aliasTypeFullName.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.aliasTypeFullName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where aliasTypeFullName does not match any of the regular expressions in `values`.
      */
    def aliasTypeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.aliasTypeFullName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to astParentFullName property */
    def astParentFullName: Iterator[String] =
      traversal.map(_.astParentFullName)

    /** Traverse to nodes where the astParentFullName matches the regular expression `value`
      */
    def astParentFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        astParentFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.astParentFullName).matches }
      }

    /** Traverse to nodes where the astParentFullName matches at least one of the regular expressions in `values`
      */
    def astParentFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.astParentFullName).matches } }
    }

    /** Traverse to nodes where astParentFullName matches `value` exactly.
      */
    def astParentFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 3, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.astParentFullName == value }
    }

    /** Traverse to nodes where astParentFullName matches one of the elements in `values` exactly.
      */
    def astParentFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) astParentFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.astParentFullName) }
      }

    /** Traverse to nodes where astParentFullName does not match the regular expression `value`.
      */
    def astParentFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.astParentFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.astParentFullName).matches }
      }
    }

    /** Traverse to nodes where astParentFullName does not match any of the regular expressions in `values`.
      */
    def astParentFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.astParentFullName).matches }.isEmpty }
    }

    /** Traverse to astParentType property */
    def astParentType: Iterator[String] =
      traversal.map(_.astParentType)

    /** Traverse to nodes where the astParentType matches the regular expression `value`
      */
    def astParentType(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        astParentTypeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.astParentType).matches }
      }

    /** Traverse to nodes where the astParentType matches at least one of the regular expressions in `values`
      */
    def astParentType(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.astParentType).matches } }
    }

    /** Traverse to nodes where astParentType matches `value` exactly.
      */
    def astParentTypeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 4, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.astParentType == value }
    }

    /** Traverse to nodes where astParentType matches one of the elements in `values` exactly.
      */
    def astParentTypeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) astParentTypeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.astParentType) }
      }

    /** Traverse to nodes where astParentType does not match the regular expression `value`.
      */
    def astParentTypeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.astParentType != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.astParentType).matches }
      }
    }

    /** Traverse to nodes where astParentType does not match any of the regular expressions in `values`.
      */
    def astParentTypeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.astParentType).matches }.isEmpty }
    }

    /** Traverse to filename property */
    def filename: Iterator[String] =
      traversal.map(_.filename)

    /** Traverse to nodes where the filename matches the regular expression `value`
      */
    def filename(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        filenameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.filename).matches }
      }

    /** Traverse to nodes where the filename matches at least one of the regular expressions in `values`
      */
    def filename(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.filename).matches } }
    }

    /** Traverse to nodes where filename matches `value` exactly.
      */
    def filenameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 21, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.filename == value }
    }

    /** Traverse to nodes where filename matches one of the elements in `values` exactly.
      */
    def filenameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) filenameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.filename) }
      }

    /** Traverse to nodes where filename does not match the regular expression `value`.
      */
    def filenameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.filename != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.filename).matches }
      }
    }

    /** Traverse to nodes where filename does not match any of the regular expressions in `values`.
      */
    def filenameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.filename).matches }.isEmpty }
    }

    /** Traverse to fullName property */
    def fullName: Iterator[String] =
      traversal.map(_.fullName)

    /** Traverse to nodes where the fullName matches the regular expression `value`
      */
    def fullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        fullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.fullName).matches }
      }

    /** Traverse to nodes where the fullName matches at least one of the regular expressions in `values`
      */
    def fullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.fullName).matches } }
    }

    /** Traverse to nodes where fullName matches `value` exactly.
      */
    def fullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 22, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.fullName == value }
    }

    /** Traverse to nodes where fullName matches one of the elements in `values` exactly.
      */
    def fullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) fullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.fullName) }
      }

    /** Traverse to nodes where fullName does not match the regular expression `value`.
      */
    def fullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.fullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.fullName).matches }
      }
    }

    /** Traverse to nodes where fullName does not match any of the regular expressions in `values`.
      */
    def fullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.fullName).matches }.isEmpty }
    }

    /** Traverse to inheritsFromTypeFullName property */
    def inheritsFromTypeFullName: Iterator[String] =
      traversal.flatMap(_.inheritsFromTypeFullName)

    /** Traverse to isExternal property */
    def isExternal: Iterator[Boolean] =
      traversal.map(_.isExternal)

    /** Traverse to nodes where the isExternal equals the given `value`
      */
    def isExternal(value: Boolean): Iterator[NodeType] =
      traversal.filter { _.isExternal == value }

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to offset property */
    def offset: Iterator[Int] =
      traversal.flatMap(_.offset)

    /** Traverse to nodes where the offset equals the given `value`
      */
    def offset(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the offset equals at least one of the given `values`
      */
    def offset(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offset is not equal to the given `value`
      */
    def offsetNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the offset does not equal any one of the given `values`
      */
    def offsetNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offset; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offset is greater than the given `value`
      */
    def offsetGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the offset is greater than or equal the given `value`
      */
    def offsetGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the offset is less than the given `value`
      */
    def offsetLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the offset is less than or equal the given `value`
      */
    def offsetLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offset; tmp.isDefined && tmp.get <= value
      }

    /** Traverse to offsetEnd property */
    def offsetEnd: Iterator[Int] =
      traversal.flatMap(_.offsetEnd)

    /** Traverse to nodes where the offsetEnd equals the given `value`
      */
    def offsetEnd(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the offsetEnd equals at least one of the given `values`
      */
    def offsetEnd(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offsetEnd is not equal to the given `value`
      */
    def offsetEndNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the offsetEnd does not equal any one of the given `values`
      */
    def offsetEndNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the offsetEnd is greater than the given `value`
      */
    def offsetEndGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the offsetEnd is greater than or equal the given `value`
      */
    def offsetEndGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the offsetEnd is less than the given `value`
      */
    def offsetEndLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the offsetEnd is less than or equal the given `value`
      */
    def offsetEndLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.offsetEnd; tmp.isDefined && tmp.get <= value
      }

  }
  final class Traversal_TypeParameterBase[NodeType <: nodes.TypeParameterBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  final class Traversal_TypeRefBase[NodeType <: nodes.TypeRefBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_UnknownBase[NodeType <: nodes.UnknownBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to containedRef property */
    def containedRef: Iterator[String] =
      traversal.map(_.containedRef)

    /** Traverse to nodes where the containedRef matches the regular expression `value`
      */
    def containedRef(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        containedRefExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.containedRef).matches }
      }

    /** Traverse to nodes where the containedRef matches at least one of the regular expressions in `values`
      */
    def containedRef(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.containedRef).matches } }
    }

    /** Traverse to nodes where containedRef matches `value` exactly.
      */
    def containedRefExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 13, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.containedRef == value }
    }

    /** Traverse to nodes where containedRef matches one of the elements in `values` exactly.
      */
    def containedRefExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) containedRefExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.containedRef) }
      }

    /** Traverse to nodes where containedRef does not match the regular expression `value`.
      */
    def containedRefNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.containedRef != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.containedRef).matches }
      }
    }

    /** Traverse to nodes where containedRef does not match any of the regular expressions in `values`.
      */
    def containedRefNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.containedRef).matches }.isEmpty }
    }

    /** Traverse to dynamicTypeHintFullName property */
    def dynamicTypeHintFullName: Iterator[String] =
      traversal.flatMap(_.dynamicTypeHintFullName)

    /** Traverse to parserTypeName property */
    def parserTypeName: Iterator[String] =
      traversal.map(_.parserTypeName)

    /** Traverse to nodes where the parserTypeName matches the regular expression `value`
      */
    def parserTypeName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        parserTypeNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.parserTypeName).matches }
      }

    /** Traverse to nodes where the parserTypeName matches at least one of the regular expressions in `values`
      */
    def parserTypeName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.parserTypeName).matches } }
    }

    /** Traverse to nodes where parserTypeName matches `value` exactly.
      */
    def parserTypeNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 46, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.parserTypeName == value }
    }

    /** Traverse to nodes where parserTypeName matches one of the elements in `values` exactly.
      */
    def parserTypeNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) parserTypeNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.parserTypeName) }
      }

    /** Traverse to nodes where parserTypeName does not match the regular expression `value`.
      */
    def parserTypeNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.parserTypeName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.parserTypeName).matches }
      }
    }

    /** Traverse to nodes where parserTypeName does not match any of the regular expressions in `values`.
      */
    def parserTypeNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.parserTypeName).matches }.isEmpty }
    }

    /** Traverse to possibleTypes property */
    def possibleTypes: Iterator[String] =
      traversal.flatMap(_.possibleTypes)

    /** Traverse to typeFullName property */
    def typeFullName: Iterator[String] =
      traversal.map(_.typeFullName)

    /** Traverse to nodes where the typeFullName matches the regular expression `value`
      */
    def typeFullName(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        typeFullNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.typeFullName).matches }
      }

    /** Traverse to nodes where the typeFullName matches at least one of the regular expressions in `values`
      */
    def typeFullName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.typeFullName).matches } }
    }

    /** Traverse to nodes where typeFullName matches `value` exactly.
      */
    def typeFullNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 52, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.typeFullName == value }
    }

    /** Traverse to nodes where typeFullName matches one of the elements in `values` exactly.
      */
    def typeFullNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) typeFullNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.typeFullName) }
      }

    /** Traverse to nodes where typeFullName does not match the regular expression `value`.
      */
    def typeFullNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.typeFullName != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.typeFullName).matches }
      }
    }

    /** Traverse to nodes where typeFullName does not match any of the regular expressions in `values`.
      */
    def typeFullNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.typeFullName).matches }.isEmpty }
    }

  }
  final class Traversal_AstNodeBase[NodeType <: nodes.AstNodeBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to code property */
    def code: Iterator[String] =
      traversal.map(_.code)

    /** Traverse to nodes where the code matches the regular expression `value`
      */
    def code(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        codeExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.code).matches }
      }

    /** Traverse to nodes where the code matches at least one of the regular expressions in `values`
      */
    def code(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.code).matches } }
    }

    /** Traverse to nodes where code matches `value` exactly.
      */
    def codeExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 10, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.code == value }
    }

    /** Traverse to nodes where code matches one of the elements in `values` exactly.
      */
    def codeExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) codeExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.code) }
      }

    /** Traverse to nodes where code does not match the regular expression `value`.
      */
    def codeNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.code != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.code).matches }
      }
    }

    /** Traverse to nodes where code does not match any of the regular expressions in `values`.
      */
    def codeNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.code).matches }.isEmpty }
    }

    /** Traverse to columnNumber property */
    def columnNumber: Iterator[Int] =
      traversal.flatMap(_.columnNumber)

    /** Traverse to nodes where the columnNumber equals the given `value`
      */
    def columnNumber(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the columnNumber equals at least one of the given `values`
      */
    def columnNumber(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the columnNumber is not equal to the given `value`
      */
    def columnNumberNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the columnNumber does not equal any one of the given `values`
      */
    def columnNumberNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the columnNumber is greater than the given `value`
      */
    def columnNumberGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the columnNumber is greater than or equal the given `value`
      */
    def columnNumberGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the columnNumber is less than the given `value`
      */
    def columnNumberLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the columnNumber is less than or equal the given `value`
      */
    def columnNumberLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.columnNumber; tmp.isDefined && tmp.get <= value
      }

    /** Traverse to lineNumber property */
    def lineNumber: Iterator[Int] =
      traversal.flatMap(_.lineNumber)

    /** Traverse to nodes where the lineNumber equals the given `value`
      */
    def lineNumber(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get == value
      }

    /** Traverse to nodes where the lineNumber equals at least one of the given `values`
      */
    def lineNumber(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumber is not equal to the given `value`
      */
    def lineNumberNot(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isEmpty || tmp.get != value
      }

    /** Traverse to nodes where the lineNumber does not equal any one of the given `values`
      */
    def lineNumberNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isEmpty || !vset.contains(tmp.get)
      }
    }

    /** Traverse to nodes where the lineNumber is greater than the given `value`
      */
    def lineNumberGt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get > value
      }

    /** Traverse to nodes where the lineNumber is greater than or equal the given `value`
      */
    def lineNumberGte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get >= value
      }

    /** Traverse to nodes where the lineNumber is less than the given `value`
      */
    def lineNumberLt(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get < value
      }

    /** Traverse to nodes where the lineNumber is less than or equal the given `value`
      */
    def lineNumberLte(value: Int): Iterator[NodeType] =
      traversal.filter { node =>
        val tmp = node.lineNumber; tmp.isDefined && tmp.get <= value
      }

    /** Traverse to order property */
    def order: Iterator[Int] =
      traversal.map(_.order)

    /** Traverse to nodes where the order equals the given `value`
      */
    def order(value: Int): Iterator[NodeType] =
      traversal.filter { _.order == value }

    /** Traverse to nodes where the order equals at least one of the given `values`
      */
    def order(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => vset.contains(node.order) }
    }

    /** Traverse to nodes where the order is not equal to the given `value`
      */
    def orderNot(value: Int): Iterator[NodeType] =
      traversal.filter { _.order != value }

    /** Traverse to nodes where the order is not equal to any of the given `values`
      */
    def orderNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => !vset.contains(node.order) }
    }

    /** Traverse to nodes where the order is greater than the given `value`
      */
    def orderGt(value: Int): Iterator[NodeType] =
      traversal.filter { _.order > value }

    /** Traverse to nodes where the order is greater than or equal the given `value`
      */
    def orderGte(value: Int): Iterator[NodeType] =
      traversal.filter { _.order >= value }

    /** Traverse to nodes where the order is less than the given `value`
      */
    def orderLt(value: Int): Iterator[NodeType] =
      traversal.filter { _.order < value }

    /** Traverse to nodes where the order is less than or equal the given `value`
      */
    def orderLte(value: Int): Iterator[NodeType] =
      traversal.filter { _.order <= value }

  }
  final class Traversal_CallReprBase[NodeType <: nodes.CallReprBase](val traversal: Iterator[NodeType]) extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

    /** Traverse to signature property */
    def signature: Iterator[String] =
      traversal.map(_.signature)

    /** Traverse to nodes where the signature matches the regular expression `value`
      */
    def signature(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        signatureExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.signature).matches }
      }

    /** Traverse to nodes where the signature matches at least one of the regular expressions in `values`
      */
    def signature(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.signature).matches } }
    }

    /** Traverse to nodes where signature matches `value` exactly.
      */
    def signatureExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 49, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.signature == value }
    }

    /** Traverse to nodes where signature matches one of the elements in `values` exactly.
      */
    def signatureExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) signatureExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.signature) }
      }

    /** Traverse to nodes where signature does not match the regular expression `value`.
      */
    def signatureNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.signature != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.signature).matches }
      }
    }

    /** Traverse to nodes where signature does not match any of the regular expressions in `values`.
      */
    def signatureNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.signature).matches }.isEmpty }
    }

  }
  final class Traversal_CfgNodeBase[NodeType <: nodes.CfgNodeBase](val traversal: Iterator[NodeType]) extends AnyVal {}
  final class Traversal_ExpressionBase[NodeType <: nodes.ExpressionBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to argumentIndex property */
    def argumentIndex: Iterator[Int] =
      traversal.map(_.argumentIndex)

    /** Traverse to nodes where the argumentIndex equals the given `value`
      */
    def argumentIndex(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex == value }

    /** Traverse to nodes where the argumentIndex equals at least one of the given `values`
      */
    def argumentIndex(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => vset.contains(node.argumentIndex) }
    }

    /** Traverse to nodes where the argumentIndex is not equal to the given `value`
      */
    def argumentIndexNot(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex != value }

    /** Traverse to nodes where the argumentIndex is not equal to any of the given `values`
      */
    def argumentIndexNot(values: Int*): Iterator[NodeType] = {
      val vset = values.toSet
      traversal.filter { node => !vset.contains(node.argumentIndex) }
    }

    /** Traverse to nodes where the argumentIndex is greater than the given `value`
      */
    def argumentIndexGt(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex > value }

    /** Traverse to nodes where the argumentIndex is greater than or equal the given `value`
      */
    def argumentIndexGte(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex >= value }

    /** Traverse to nodes where the argumentIndex is less than the given `value`
      */
    def argumentIndexLt(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex < value }

    /** Traverse to nodes where the argumentIndex is less than or equal the given `value`
      */
    def argumentIndexLte(value: Int): Iterator[NodeType] =
      traversal.filter { _.argumentIndex <= value }

    /** Traverse to argumentName property */
    def argumentName: Iterator[String] =
      traversal.flatMap(_.argumentName)

    /** Traverse to nodes where the argumentName matches the regular expression `value`
      */
    def argumentName(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        argumentNameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item =>
          val tmp = item.argumentName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where the argumentName matches at least one of the regular expressions in `values`
      */
    def argumentName(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item =>
        val tmp = item.argumentName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

    /** Traverse to nodes where argumentName matches `value` exactly.
      */
    def argumentNameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 2, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ =>
        traversal.filter { node =>
          val tmp = node.argumentName; tmp.isDefined && tmp.get == value
        }
    }

    /** Traverse to nodes where argumentName matches one of the elements in `values` exactly.
      */
    def argumentNameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) argumentNameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item =>
          val tmp = item.argumentName; tmp.isDefined && valueSet.contains(tmp.get)
        }
      }

    /** Traverse to nodes where argumentName does not match the regular expression `value`.
      */
    def argumentNameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.argumentName.isEmpty || node.argumentName.get != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item =>
          val tmp = item.argumentName; tmp.isDefined && matcher.reset(tmp.get).matches
        }
      }
    }

    /** Traverse to nodes where argumentName does not match any of the regular expressions in `values`.
      */
    def argumentNameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filterNot { item =>
        val tmp = item.argumentName; tmp.isDefined && matchers.exists { _.reset(tmp.get).matches }
      }
    }

  }
  final class Traversal_DeclarationBase[NodeType <: nodes.DeclarationBase](val traversal: Iterator[NodeType])
      extends AnyVal {

    /** Traverse to name property */
    def name: Iterator[String] =
      traversal.map(_.name)

    /** Traverse to nodes where the name matches the regular expression `value`
      */
    def name(pattern: String): Iterator[NodeType] =
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        nameExact(pattern)
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filter { item => matcher.reset(item.name).matches }
      }

    /** Traverse to nodes where the name matches at least one of the regular expressions in `values`
      */
    def name(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.exists { _.reset(item.name).matches } }
    }

    /** Traverse to nodes where name matches `value` exactly.
      */
    def nameExact(value: String): Iterator[NodeType] = traversal match {
      case init: flatgraph.misc.InitNodeIterator[flatgraph.GNode @unchecked] if init.isVirgin && init.hasNext =>
        val someNode = init.next
        flatgraph.Accessors
          .getWithInverseIndex(someNode.graph, someNode.nodeKind, 39, value)
          .asInstanceOf[Iterator[NodeType]]
      case _ => traversal.filter { _.name == value }
    }

    /** Traverse to nodes where name matches one of the elements in `values` exactly.
      */
    def nameExact(values: String*): Iterator[NodeType] =
      if (values.length == 1) nameExact(values.head)
      else {
        val valueSet = values.toSet
        traversal.filter { item => valueSet.contains(item.name) }
      }

    /** Traverse to nodes where name does not match the regular expression `value`.
      */
    def nameNot(pattern: String): Iterator[NodeType] = {
      if (!flatgraph.misc.Regex.isRegex(pattern)) {
        traversal.filter { node => node.name != pattern }
      } else {
        val matcher = flatgraph.misc.Regex.multilineMatcher(pattern)
        traversal.filterNot { item => matcher.reset(item.name).matches }
      }
    }

    /** Traverse to nodes where name does not match any of the regular expressions in `values`.
      */
    def nameNot(patterns: String*): Iterator[NodeType] = {
      val matchers = patterns.map(flatgraph.misc.Regex.multilineMatcher)
      traversal.filter { item => matchers.find { _.reset(item.name).matches }.isEmpty }
    }

  }
  /* accessors for base nodes end */
}
trait ConcreteStoredConversions extends ConcreteBaseConversions {
  import Accessors.*
  implicit def accessPropertyAliasTypeFullNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasAliasTypeFullNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_ALIAS_TYPE_FULL_NAME[NodeType] =
    new Traversal_Property_ALIAS_TYPE_FULL_NAME(traversal.iterator)
  implicit def accessPropertyArgumentIndexTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasArgumentIndexEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_ARGUMENT_INDEX[NodeType] =
    new Traversal_Property_ARGUMENT_INDEX(traversal.iterator)
  implicit def accessPropertyArgumentNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasArgumentNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_ARGUMENT_NAME[NodeType] =
    new Traversal_Property_ARGUMENT_NAME(traversal.iterator)
  implicit def accessPropertyAstParentFullNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasAstParentFullNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_AST_PARENT_FULL_NAME[NodeType] =
    new Traversal_Property_AST_PARENT_FULL_NAME(traversal.iterator)
  implicit def accessPropertyAstParentTypeTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasAstParentTypeEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_AST_PARENT_TYPE[NodeType] =
    new Traversal_Property_AST_PARENT_TYPE(traversal.iterator)
  implicit def accessPropertyCanonicalNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasCanonicalNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_CANONICAL_NAME[NodeType] =
    new Traversal_Property_CANONICAL_NAME(traversal.iterator)
  implicit def accessPropertyClassNameTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasClassNameEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_CLASS_NAME[NodeType] = new Traversal_Property_CLASS_NAME(traversal.iterator)
  implicit def accessPropertyClassShortNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasClassShortNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_CLASS_SHORT_NAME[NodeType] =
    new Traversal_Property_CLASS_SHORT_NAME(traversal.iterator)
  implicit def accessPropertyClosureBindingIdTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasClosureBindingIdEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_CLOSURE_BINDING_ID[NodeType] =
    new Traversal_Property_CLOSURE_BINDING_ID(traversal.iterator)
  implicit def accessPropertyClosureOriginalNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasClosureOriginalNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_CLOSURE_ORIGINAL_NAME[NodeType] =
    new Traversal_Property_CLOSURE_ORIGINAL_NAME(traversal.iterator)
  implicit def accessPropertyCodeTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasCodeEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_CODE[NodeType] = new Traversal_Property_CODE(traversal.iterator)
  implicit def accessPropertyColumnNumberTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasColumnNumberEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_COLUMN_NUMBER[NodeType] =
    new Traversal_Property_COLUMN_NUMBER(traversal.iterator)
  implicit def accessPropertyColumnNumberEndTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasColumnNumberEndEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_COLUMN_NUMBER_END[NodeType] =
    new Traversal_Property_COLUMN_NUMBER_END(traversal.iterator)
  implicit def accessPropertyContainedRefTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasContainedRefEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_CONTAINED_REF[NodeType] =
    new Traversal_Property_CONTAINED_REF(traversal.iterator)
  implicit def accessPropertyContentTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasContentEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_CONTENT[NodeType] = new Traversal_Property_CONTENT(traversal.iterator)
  implicit def accessPropertyControlStructureTypeTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasControlStructureTypeEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_CONTROL_STRUCTURE_TYPE[NodeType] =
    new Traversal_Property_CONTROL_STRUCTURE_TYPE(traversal.iterator)
  implicit def accessPropertyDependencyGroupIdTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasDependencyGroupIdEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_DEPENDENCY_GROUP_ID[NodeType] =
    new Traversal_Property_DEPENDENCY_GROUP_ID(traversal.iterator)
  implicit def accessPropertyDispatchTypeTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasDispatchTypeEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_DISPATCH_TYPE[NodeType] =
    new Traversal_Property_DISPATCH_TYPE(traversal.iterator)
  implicit def accessPropertyDynamicTypeHintFullNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasDynamicTypeHintFullNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_DYNAMIC_TYPE_HINT_FULL_NAME[NodeType] =
    new Traversal_Property_DYNAMIC_TYPE_HINT_FULL_NAME(traversal.iterator)
  implicit def accessPropertyEvaluationStrategyTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasEvaluationStrategyEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_EVALUATION_STRATEGY[NodeType] =
    new Traversal_Property_EVALUATION_STRATEGY(traversal.iterator)
  implicit def accessPropertyExplicitAsTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasExplicitAsEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_EXPLICIT_AS[NodeType] = new Traversal_Property_EXPLICIT_AS(
    traversal.iterator
  )
  implicit def accessPropertyFilenameTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasFilenameEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_FILENAME[NodeType] = new Traversal_Property_FILENAME(traversal.iterator)
  implicit def accessPropertyFullNameTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasFullNameEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_FULL_NAME[NodeType] = new Traversal_Property_FULL_NAME(traversal.iterator)
  implicit def accessPropertyHashTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasHashEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_HASH[NodeType] = new Traversal_Property_HASH(traversal.iterator)
  implicit def accessPropertyImportedAsTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasImportedAsEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_IMPORTED_AS[NodeType] = new Traversal_Property_IMPORTED_AS(
    traversal.iterator
  )
  implicit def accessPropertyImportedEntityTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasImportedEntityEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_IMPORTED_ENTITY[NodeType] =
    new Traversal_Property_IMPORTED_ENTITY(traversal.iterator)
  implicit def accessPropertyIndexTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIndexEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_INDEX[NodeType] = new Traversal_Property_INDEX(traversal.iterator)
  implicit def accessPropertyInheritsFromTypeFullNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasInheritsFromTypeFullNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_INHERITS_FROM_TYPE_FULL_NAME[NodeType] =
    new Traversal_Property_INHERITS_FROM_TYPE_FULL_NAME(traversal.iterator)
  implicit def accessPropertyIsExplicitTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIsExplicitEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_IS_EXPLICIT[NodeType] = new Traversal_Property_IS_EXPLICIT(
    traversal.iterator
  )
  implicit def accessPropertyIsExternalTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIsExternalEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_IS_EXTERNAL[NodeType] = new Traversal_Property_IS_EXTERNAL(
    traversal.iterator
  )
  implicit def accessPropertyIsVariadicTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIsVariadicEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_IS_VARIADIC[NodeType] = new Traversal_Property_IS_VARIADIC(
    traversal.iterator
  )
  implicit def accessPropertyIsWildcardTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasIsWildcardEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_IS_WILDCARD[NodeType] = new Traversal_Property_IS_WILDCARD(
    traversal.iterator
  )
  implicit def accessPropertyKeyTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasKeyEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_KEY[NodeType] = new Traversal_Property_KEY(traversal.iterator)
  implicit def accessPropertyLanguageTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasLanguageEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_LANGUAGE[NodeType] = new Traversal_Property_LANGUAGE(traversal.iterator)
  implicit def accessPropertyLineNumberTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasLineNumberEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_LINE_NUMBER[NodeType] = new Traversal_Property_LINE_NUMBER(
    traversal.iterator
  )
  implicit def accessPropertyLineNumberEndTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasLineNumberEndEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_LINE_NUMBER_END[NodeType] =
    new Traversal_Property_LINE_NUMBER_END(traversal.iterator)
  implicit def accessPropertyMethodFullNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasMethodFullNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_METHOD_FULL_NAME[NodeType] =
    new Traversal_Property_METHOD_FULL_NAME(traversal.iterator)
  implicit def accessPropertyMethodShortNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasMethodShortNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_METHOD_SHORT_NAME[NodeType] =
    new Traversal_Property_METHOD_SHORT_NAME(traversal.iterator)
  implicit def accessPropertyModifierTypeTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasModifierTypeEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_MODIFIER_TYPE[NodeType] =
    new Traversal_Property_MODIFIER_TYPE(traversal.iterator)
  implicit def accessPropertyNameTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasNameEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_NAME[NodeType] = new Traversal_Property_NAME(traversal.iterator)
  implicit def accessPropertyNodeLabelTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasNodeLabelEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_NODE_LABEL[NodeType] = new Traversal_Property_NODE_LABEL(traversal.iterator)
  implicit def accessPropertyOffsetTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasOffsetEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_OFFSET[NodeType] = new Traversal_Property_OFFSET(traversal.iterator)
  implicit def accessPropertyOffsetEndTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasOffsetEndEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_OFFSET_END[NodeType] = new Traversal_Property_OFFSET_END(traversal.iterator)
  implicit def accessPropertyOrderTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasOrderEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_ORDER[NodeType] = new Traversal_Property_ORDER(traversal.iterator)
  implicit def accessPropertyOverlaysTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasOverlaysEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_OVERLAYS[NodeType] = new Traversal_Property_OVERLAYS(traversal.iterator)
  implicit def accessPropertyPackageNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasPackageNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_PACKAGE_NAME[NodeType] = new Traversal_Property_PACKAGE_NAME(
    traversal.iterator
  )
  implicit def accessPropertyParserTypeNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasParserTypeNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_PARSER_TYPE_NAME[NodeType] =
    new Traversal_Property_PARSER_TYPE_NAME(traversal.iterator)
  implicit def accessPropertyPossibleTypesTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasPossibleTypesEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_POSSIBLE_TYPES[NodeType] =
    new Traversal_Property_POSSIBLE_TYPES(traversal.iterator)
  implicit def accessPropertyRootTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasRootEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_ROOT[NodeType] = new Traversal_Property_ROOT(traversal.iterator)
  implicit def accessPropertySignatureTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasSignatureEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_SIGNATURE[NodeType] = new Traversal_Property_SIGNATURE(traversal.iterator)
  implicit def accessPropertySymbolTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasSymbolEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_SYMBOL[NodeType] = new Traversal_Property_SYMBOL(traversal.iterator)
  implicit def accessPropertyTypeDeclFullNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasTypeDeclFullNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_TYPE_DECL_FULL_NAME[NodeType] =
    new Traversal_Property_TYPE_DECL_FULL_NAME(traversal.iterator)
  implicit def accessPropertyTypeFullNameTraversal[
    NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasTypeFullNameEMT]
  ](traversal: IterableOnce[NodeType]): Traversal_Property_TYPE_FULL_NAME[NodeType] =
    new Traversal_Property_TYPE_FULL_NAME(traversal.iterator)
  implicit def accessPropertyValueTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasValueEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_VALUE[NodeType] = new Traversal_Property_VALUE(traversal.iterator)
  implicit def accessPropertyVersionTraversal[NodeType <: nodes.StoredNode & nodes.StaticType[nodes.HasVersionEMT]](
    traversal: IterableOnce[NodeType]
  ): Traversal_Property_VERSION[NodeType] = new Traversal_Property_VERSION(traversal.iterator)
}

trait ConcreteBaseConversions extends AbstractBaseConversions0 {
  import Accessors.*
  implicit def traversal_AnnotationBase[NodeType <: nodes.AnnotationBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_AnnotationBase[NodeType] = new Traversal_AnnotationBase(traversal.iterator)
  implicit def traversal_AnnotationLiteralBase[NodeType <: nodes.AnnotationLiteralBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_AnnotationLiteralBase[NodeType] = new Traversal_AnnotationLiteralBase(traversal.iterator)
  implicit def traversal_AnnotationParameterBase[NodeType <: nodes.AnnotationParameterBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_AnnotationParameterBase[NodeType] = new Traversal_AnnotationParameterBase(traversal.iterator)
  implicit def traversal_AnnotationParameterAssignBase[NodeType <: nodes.AnnotationParameterAssignBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_AnnotationParameterAssignBase[NodeType] = new Traversal_AnnotationParameterAssignBase(traversal.iterator)
  implicit def traversal_ArrayInitializerBase[NodeType <: nodes.ArrayInitializerBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_ArrayInitializerBase[NodeType] = new Traversal_ArrayInitializerBase(traversal.iterator)
  implicit def traversal_BindingBase[NodeType <: nodes.BindingBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_BindingBase[NodeType] = new Traversal_BindingBase(traversal.iterator)
  implicit def traversal_BlockBase[NodeType <: nodes.BlockBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_BlockBase[NodeType] = new Traversal_BlockBase(traversal.iterator)
  implicit def traversal_CallBase[NodeType <: nodes.CallBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_CallBase[NodeType] = new Traversal_CallBase(traversal.iterator)
  implicit def traversal_ClosureBindingBase[NodeType <: nodes.ClosureBindingBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_ClosureBindingBase[NodeType] = new Traversal_ClosureBindingBase(traversal.iterator)
  implicit def traversal_CommentBase[NodeType <: nodes.CommentBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_CommentBase[NodeType] = new Traversal_CommentBase(traversal.iterator)
  implicit def traversal_ConfigFileBase[NodeType <: nodes.ConfigFileBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_ConfigFileBase[NodeType] = new Traversal_ConfigFileBase(traversal.iterator)
  implicit def traversal_ControlStructureBase[NodeType <: nodes.ControlStructureBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_ControlStructureBase[NodeType] = new Traversal_ControlStructureBase(traversal.iterator)
  implicit def traversal_DependencyBase[NodeType <: nodes.DependencyBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_DependencyBase[NodeType] = new Traversal_DependencyBase(traversal.iterator)
  implicit def traversal_FieldIdentifierBase[NodeType <: nodes.FieldIdentifierBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_FieldIdentifierBase[NodeType] = new Traversal_FieldIdentifierBase(traversal.iterator)
  implicit def traversal_FileBase[NodeType <: nodes.FileBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_FileBase[NodeType] = new Traversal_FileBase(traversal.iterator)
  implicit def traversal_FindingBase[NodeType <: nodes.FindingBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_FindingBase[NodeType] = new Traversal_FindingBase(traversal.iterator)
  implicit def traversal_IdentifierBase[NodeType <: nodes.IdentifierBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_IdentifierBase[NodeType] = new Traversal_IdentifierBase(traversal.iterator)
  implicit def traversal_ImportBase[NodeType <: nodes.ImportBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_ImportBase[NodeType] = new Traversal_ImportBase(traversal.iterator)
  implicit def traversal_JumpLabelBase[NodeType <: nodes.JumpLabelBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_JumpLabelBase[NodeType] = new Traversal_JumpLabelBase(traversal.iterator)
  implicit def traversal_JumpTargetBase[NodeType <: nodes.JumpTargetBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_JumpTargetBase[NodeType] = new Traversal_JumpTargetBase(traversal.iterator)
  implicit def traversal_KeyValuePairBase[NodeType <: nodes.KeyValuePairBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_KeyValuePairBase[NodeType] = new Traversal_KeyValuePairBase(traversal.iterator)
  implicit def traversal_LiteralBase[NodeType <: nodes.LiteralBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_LiteralBase[NodeType] = new Traversal_LiteralBase(traversal.iterator)
  implicit def traversal_LocalBase[NodeType <: nodes.LocalBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_LocalBase[NodeType] = new Traversal_LocalBase(traversal.iterator)
  implicit def traversal_LocationBase[NodeType <: nodes.LocationBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_LocationBase[NodeType] = new Traversal_LocationBase(traversal.iterator)
  implicit def traversal_MemberBase[NodeType <: nodes.MemberBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_MemberBase[NodeType] = new Traversal_MemberBase(traversal.iterator)
  implicit def traversal_MetaDataBase[NodeType <: nodes.MetaDataBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_MetaDataBase[NodeType] = new Traversal_MetaDataBase(traversal.iterator)
  implicit def traversal_MethodBase[NodeType <: nodes.MethodBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_MethodBase[NodeType] = new Traversal_MethodBase(traversal.iterator)
  implicit def traversal_MethodParameterInBase[NodeType <: nodes.MethodParameterInBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_MethodParameterInBase[NodeType] = new Traversal_MethodParameterInBase(traversal.iterator)
  implicit def traversal_MethodParameterOutBase[NodeType <: nodes.MethodParameterOutBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_MethodParameterOutBase[NodeType] = new Traversal_MethodParameterOutBase(traversal.iterator)
  implicit def traversal_MethodRefBase[NodeType <: nodes.MethodRefBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_MethodRefBase[NodeType] = new Traversal_MethodRefBase(traversal.iterator)
  implicit def traversal_MethodReturnBase[NodeType <: nodes.MethodReturnBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_MethodReturnBase[NodeType] = new Traversal_MethodReturnBase(traversal.iterator)
  implicit def traversal_ModifierBase[NodeType <: nodes.ModifierBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_ModifierBase[NodeType] = new Traversal_ModifierBase(traversal.iterator)
  implicit def traversal_NamespaceBase[NodeType <: nodes.NamespaceBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_NamespaceBase[NodeType] = new Traversal_NamespaceBase(traversal.iterator)
  implicit def traversal_NamespaceBlockBase[NodeType <: nodes.NamespaceBlockBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_NamespaceBlockBase[NodeType] = new Traversal_NamespaceBlockBase(traversal.iterator)
  implicit def traversal_ReturnBase[NodeType <: nodes.ReturnBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_ReturnBase[NodeType] = new Traversal_ReturnBase(traversal.iterator)
  implicit def traversal_TagBase[NodeType <: nodes.TagBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_TagBase[NodeType] = new Traversal_TagBase(traversal.iterator)
  implicit def traversal_TagNodePairBase[NodeType <: nodes.TagNodePairBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_TagNodePairBase[NodeType] = new Traversal_TagNodePairBase(traversal.iterator)
  implicit def traversal_TemplateDomBase[NodeType <: nodes.TemplateDomBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_TemplateDomBase[NodeType] = new Traversal_TemplateDomBase(traversal.iterator)
  implicit def traversal_TypeBase[NodeType <: nodes.TypeBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_TypeBase[NodeType] = new Traversal_TypeBase(traversal.iterator)
  implicit def traversal_TypeArgumentBase[NodeType <: nodes.TypeArgumentBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_TypeArgumentBase[NodeType] = new Traversal_TypeArgumentBase(traversal.iterator)
  implicit def traversal_TypeDeclBase[NodeType <: nodes.TypeDeclBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_TypeDeclBase[NodeType] = new Traversal_TypeDeclBase(traversal.iterator)
  implicit def traversal_TypeParameterBase[NodeType <: nodes.TypeParameterBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_TypeParameterBase[NodeType] = new Traversal_TypeParameterBase(traversal.iterator)
  implicit def traversal_TypeRefBase[NodeType <: nodes.TypeRefBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_TypeRefBase[NodeType] = new Traversal_TypeRefBase(traversal.iterator)
  implicit def traversal_UnknownBase[NodeType <: nodes.UnknownBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_UnknownBase[NodeType] = new Traversal_UnknownBase(traversal.iterator)
}

trait AbstractBaseConversions0 extends AbstractBaseConversions1 {
  import Accessors.*
  implicit def traversal_AstNodeBase[NodeType <: nodes.AstNodeBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_AstNodeBase[NodeType] = new Traversal_AstNodeBase(traversal.iterator)
  implicit def traversal_CallReprBase[NodeType <: nodes.CallReprBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_CallReprBase[NodeType] = new Traversal_CallReprBase(traversal.iterator)
  implicit def traversal_CfgNodeBase[NodeType <: nodes.CfgNodeBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_CfgNodeBase[NodeType] = new Traversal_CfgNodeBase(traversal.iterator)
  implicit def traversal_ExpressionBase[NodeType <: nodes.ExpressionBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_ExpressionBase[NodeType] = new Traversal_ExpressionBase(traversal.iterator)
}

trait AbstractBaseConversions1 {
  import Accessors.*
  implicit def traversal_DeclarationBase[NodeType <: nodes.DeclarationBase](
    traversal: IterableOnce[NodeType]
  ): Traversal_DeclarationBase[NodeType] = new Traversal_DeclarationBase(traversal.iterator)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy