internal void AddBase(SyntaxNode node, object @base, object position = null) { var semanticModel = GetSemanticModel(); var typeSymbol = CodeModelService.GetTypeSymbol(@base, semanticModel, node.SpanStart); // If a CodeType or CodeTypeRef was specified, we need to verify that a // valid base type was specified (i.e. class for class, interface for interface). if ( CodeModelInterop.CanChangedVariantType(@base, VarEnum.VT_UNKNOWN) && !CodeModelService.IsValidBaseType(node, typeSymbol) ) { throw Exceptions.ThrowEInvalidArg(); } var realPosition = GetRealPosition(position); var updatedNode = CodeModelService.AddBase( node, typeSymbol, semanticModel, realPosition ); if (node != updatedNode) { UpdateNode(node, updatedNode); } }