import 'dart:collection'; import 'package:source_span/source_span.dart'; abstract class JaelObject { final FileSpan span; final usages = []; String get name; JaelObject(this.span); } class JaelCustomElement extends JaelObject { @override final String name; final attributes = SplayTreeSet(); JaelCustomElement(this.name, FileSpan span) : super(span); } class JaelVariable extends JaelObject { @override final String name; JaelVariable(this.name, FileSpan span) : super(span); } class SymbolUsage { final SymbolUsageType type; final FileSpan span; SymbolUsage(this.type, this.span); } enum SymbolUsageType { definition, read }