# File lib/journey/gtg/builder.rb, line 81
      def firstpos node
        case node
        when Nodes::Star
          firstpos(node.left)
        when Nodes::Cat
          if nullable? node.left
            firstpos(node.left) | firstpos(node.right)
          else
            firstpos(node.left)
          end
        when Nodes::Or
          node.children.map { |c| firstpos(c) }.flatten.uniq
        when Nodes::Unary
          firstpos(node.left)
        when Nodes::Terminal
          nullable?(node) ? [] : [node]
        else
          raise ArgumentError, 'unknown firstpos: %s' % node.class.name
        end
      end