Inheritance: SyntaxWalkerWithSemantic
        public override void VisitConstructorDeclaration(ConstructorDeclarationSyntax node)
        {
            // ignore static constructors
            if (node.IsStatic())
                return;

            var constructor = new Constructor();
            // read parameters
            var parameterSyntaxReader = new ParameterSyntaxReader(constructor, _semantic);
            parameterSyntaxReader.Visit(node);
            _constructors.AddConstructor(constructor);
            base.VisitConstructorDeclaration(node);
        }
 public override void VisitMethodDeclaration(MethodDeclarationSyntax node)
 {
     var method = new Method(
         node.Identifier.ToString(),
         (ITypeSymbol)_semantic.GetSymbolInfo(node.ReturnType).Symbol);
     // set correct modifiers
     method.IsOverride = node.Modifiers.Any(x => x.IsKind(SyntaxKind.OverrideKeyword));
     method.IsAbstract = node.Modifiers.Any(x => x.IsKind(SyntaxKind.AbstractKeyword));
     // read parameters
     var parameterSyntaxReader = new ParameterSyntaxReader(method, _semantic);
     parameterSyntaxReader.Visit(node);
     _methods.AddMethod(method);
     // we don't care if the method here is abstract or not
     // since methods that are defined directly in the child
     // will never be overridden by mixin methods
 }